diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 60b21a86163e..30cb9833a6a4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -45,3 +45,5 @@ updates: directory: "/" schedule: interval: weekly + exclude-paths: + - "misc/bazel/registry/**" diff --git a/.github/workflows/compile-queries.yml b/.github/workflows/compile-queries.yml deleted file mode 100644 index c8f6301bb531..000000000000 --- a/.github/workflows/compile-queries.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: "Compile all queries using the latest stable CodeQL CLI" - -on: - push: - branches: # makes sure the cache gets populated - running on the branches people tend to merge into. - - main - - "rc/*" - - "codeql-cli-*" - pull_request: - paths: - - '**.ql' - - '**.qll' - - '**/qlpack.yml' - - '**.dbscheme' - -permissions: - contents: read - -jobs: - detect-changes: - if: github.repository_owner == 'github' - runs-on: ubuntu-latest - outputs: - languages: ${{ steps.detect.outputs.languages }} - steps: - - uses: actions/checkout@v5 - - name: Detect changed languages - id: detect - run: | - if [[ "${{ github.event_name }}" == "pull_request" ]]; then - # For PRs, detect which languages have changes - changed_files=$(gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path') - languages=() - for lang in actions cpp csharp go java javascript python ql ruby rust swift; do - if echo "$changed_files" | grep -qE "^($lang/|shared/)" ; then - languages+=("$lang") - fi - done - echo "languages=$(jq -c -n '$ARGS.positional' --args "${languages[@]}")" >> $GITHUB_OUTPUT - else - # For pushes to main/rc branches, run all languages - echo 'languages=["actions","cpp","csharp","go","java","javascript","python","ql","ruby","rust","swift"]' >> $GITHUB_OUTPUT - fi - env: - GH_TOKEN: ${{ github.token }} - - compile-queries: - needs: detect-changes - if: github.repository_owner == 'github' && needs.detect-changes.outputs.languages != '[]' - runs-on: ubuntu-latest-xl - strategy: - fail-fast: false - matrix: - language: ${{ fromJson(needs.detect-changes.outputs.languages) }} - - steps: - - uses: actions/checkout@v5 - - name: Setup CodeQL - uses: ./.github/actions/fetch-codeql - with: - channel: 'release' - - name: Cache compilation cache - id: query-cache - uses: ./.github/actions/cache-query-compilation - with: - key: ${{ matrix.language }}-queries - - name: check formatting - run: find shared ${{ matrix.language }}/ql -type f \( -name "*.qll" -o -name "*.ql" \) -print0 | xargs -0 -n 3000 -P 10 codeql query format -q --check-only - - name: compile queries - check-only - # run with --check-only if running in a PR (github.sha != main) - if : ${{ github.event_name == 'pull_request' }} - shell: bash - run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000 - - name: compile queries - full - # do full compile if running on main - this populates the cache - if : ${{ github.event_name != 'pull_request' }} - shell: bash - run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000 diff --git a/.github/workflows/ruby-build.yml b/.github/workflows/ruby-build.yml deleted file mode 100644 index 39aadef09138..000000000000 --- a/.github/workflows/ruby-build.yml +++ /dev/null @@ -1,236 +0,0 @@ -name: "Ruby: Build" - -on: - push: - paths: - - "ruby/**" - - .github/workflows/ruby-build.yml - - .github/actions/fetch-codeql/action.yml - - codeql-workspace.yml - - "shared/tree-sitter-extractor/**" - branches: - - main - - "rc/*" - pull_request: - paths: - - "ruby/**" - - .github/workflows/ruby-build.yml - - .github/actions/fetch-codeql/action.yml - - codeql-workspace.yml - - "shared/tree-sitter-extractor/**" - branches: - - main - - "rc/*" - workflow_dispatch: - inputs: - tag: - description: "Version tag to create" - required: false - -env: - CARGO_TERM_COLOR: always - -defaults: - run: - working-directory: ruby - -permissions: - contents: read - -jobs: - build: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v5 - - name: Install GNU tar - if: runner.os == 'macOS' - run: | - brew install gnu-tar - echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH - - name: Prepare Windows - if: runner.os == 'Windows' - shell: powershell - run: | - git config --global core.longpaths true - - uses: ./.github/actions/os-version - id: os_version - - name: Cache entire extractor - uses: actions/cache@v3 - id: cache-extractor - with: - path: | - target/release/codeql-extractor-ruby - target/release/codeql-extractor-ruby.exe - ruby/extractor/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll - key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-extractor-${{ hashFiles('ruby/extractor/rust-toolchain.toml', 'ruby/extractor/Cargo.lock') }}-${{ hashFiles('shared/tree-sitter-extractor') }}-${{ hashFiles('ruby/extractor/**/*.rs') }} - - uses: actions/cache@v3 - if: steps.cache-extractor.outputs.cache-hit != 'true' - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-rust-cargo-${{ hashFiles('ruby/extractor/rust-toolchain.toml', 'ruby/extractor/**/Cargo.lock') }} - - name: Check formatting - if: steps.cache-extractor.outputs.cache-hit != 'true' - run: cd extractor && cargo fmt -- --check - - name: Build - if: steps.cache-extractor.outputs.cache-hit != 'true' - run: cd extractor && cargo build --verbose - - name: Run tests - if: steps.cache-extractor.outputs.cache-hit != 'true' - run: cd extractor && cargo test --verbose - - name: Release build - if: steps.cache-extractor.outputs.cache-hit != 'true' - run: cd extractor && cargo build --release - - name: Generate dbscheme - if: ${{ matrix.os == 'ubuntu-latest' && steps.cache-extractor.outputs.cache-hit != 'true'}} - run: ../target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll - - uses: actions/upload-artifact@v4 - if: ${{ matrix.os == 'ubuntu-latest' }} - with: - name: ruby.dbscheme - path: ruby/ql/lib/ruby.dbscheme - - uses: actions/upload-artifact@v4 - if: ${{ matrix.os == 'ubuntu-latest' }} - with: - name: TreeSitter.qll - path: ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll - - uses: actions/upload-artifact@v4 - with: - name: extractor-${{ matrix.os }} - path: | - target/release/codeql-extractor-ruby - target/release/codeql-extractor-ruby.exe - retention-days: 1 - compile-queries: - if: github.repository_owner == 'github' - runs-on: ubuntu-latest-xl - steps: - - uses: actions/checkout@v5 - - name: Fetch CodeQL - uses: ./.github/actions/fetch-codeql - - name: Cache compilation cache - id: query-cache - uses: ./.github/actions/cache-query-compilation - with: - key: ruby-build - - name: Build Query Pack - run: | - PACKS=${{ runner.temp }}/query-packs - rm -rf $PACKS - codeql pack create ../misc/suite-helpers --output "$PACKS" - codeql pack create ../shared/regex --output "$PACKS" - codeql pack create ../shared/ssa --output "$PACKS" - codeql pack create ../shared/tutorial --output "$PACKS" - codeql pack create ql/lib --output "$PACKS" - codeql pack create -j0 ql/src --output "$PACKS" --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" - PACK_FOLDER=$(readlink -f "$PACKS"/codeql/ruby-queries/*) - codeql generate query-help --format=sarifv2.1.0 --output="${PACK_FOLDER}/rules.sarif" ql/src - (cd ql/src; find queries \( -name '*.qhelp' -o -name '*.rb' -o -name '*.erb' \) -exec bash -c 'mkdir -p "'"${PACK_FOLDER}"'/$(dirname "{}")"' \; -exec cp "{}" "${PACK_FOLDER}/{}" \;) - - uses: actions/upload-artifact@v4 - with: - name: codeql-ruby-queries - path: | - ${{ runner.temp }}/query-packs/* - retention-days: 1 - include-hidden-files: true - - package: - runs-on: ubuntu-latest - needs: [build, compile-queries] - steps: - - uses: actions/checkout@v5 - - uses: actions/download-artifact@v4 - with: - name: ruby.dbscheme - path: ruby/ruby - - uses: actions/download-artifact@v4 - with: - name: extractor-ubuntu-latest - path: ruby/linux64 - - uses: actions/download-artifact@v4 - with: - name: extractor-windows-latest - path: ruby/win64 - - uses: actions/download-artifact@v4 - with: - name: extractor-macos-latest - path: ruby/osx64 - - run: | - mkdir -p ruby - cp -r codeql-extractor.yml tools ql/lib/ruby.dbscheme.stats ruby/ - mkdir -p ruby/tools/{linux64,osx64,win64} - cp linux64/codeql-extractor-ruby ruby/tools/linux64/extractor - cp osx64/codeql-extractor-ruby ruby/tools/osx64/extractor - cp win64/codeql-extractor-ruby.exe ruby/tools/win64/extractor.exe - chmod +x ruby/tools/{linux64,osx64}/extractor - zip -rq codeql-ruby.zip ruby - - uses: actions/upload-artifact@v4 - with: - name: codeql-ruby-pack - path: ruby/codeql-ruby.zip - retention-days: 1 - include-hidden-files: true - - uses: actions/download-artifact@v4 - with: - name: codeql-ruby-queries - path: ruby/qlpacks - - run: | - echo '{ - "provide": [ - "ruby/codeql-extractor.yml", - "qlpacks/*/*/*/qlpack.yml" - ] - }' > .codeqlmanifest.json - zip -rq codeql-ruby-bundle.zip .codeqlmanifest.json ruby qlpacks - - uses: actions/upload-artifact@v4 - with: - name: codeql-ruby-bundle - path: ruby/codeql-ruby-bundle.zip - retention-days: 1 - include-hidden-files: true - - test: - defaults: - run: - working-directory: ${{ github.workspace }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - - runs-on: ${{ matrix.os }} - needs: [package] - steps: - - uses: actions/checkout@v5 - - name: Fetch CodeQL - uses: ./.github/actions/fetch-codeql - - - name: Download Ruby bundle - uses: actions/download-artifact@v4 - with: - name: codeql-ruby-bundle - path: ${{ runner.temp }} - - name: Unzip Ruby bundle - shell: bash - run: unzip -q -d "${{ runner.temp }}/ruby-bundle" "${{ runner.temp }}/codeql-ruby-bundle.zip" - - - name: Run QL test - shell: bash - run: | - codeql test run --search-path "${{ runner.temp }}/ruby-bundle" --additional-packs "${{ runner.temp }}/ruby-bundle" ruby/ql/test/library-tests/ast/constants/ - - name: Create database - shell: bash - run: | - codeql database create --search-path "${{ runner.temp }}/ruby-bundle" --language ruby --source-root ruby/ql/test/library-tests/ast/constants/ ../database - - name: Analyze database - shell: bash - run: | - codeql database analyze --search-path "${{ runner.temp }}/ruby-bundle" --format=sarifv2.1.0 --output=out.sarif ../database ruby-code-scanning.qls diff --git a/.github/workflows/ruby-dataset-measure.yml b/.github/workflows/ruby-dataset-measure.yml deleted file mode 100644 index a88b23bf3a10..000000000000 --- a/.github/workflows/ruby-dataset-measure.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: "Ruby: Collect database stats" - -on: - push: - branches: - - main - - "rc/*" - paths: - - ruby/ql/lib/ruby.dbscheme - - .github/workflows/ruby-dataset-measure.yml - pull_request: - branches: - - main - - "rc/*" - paths: - - ruby/ql/lib/ruby.dbscheme - - .github/workflows/ruby-dataset-measure.yml - workflow_dispatch: - -permissions: - contents: read - -jobs: - measure: - env: - CODEQL_THREADS: 4 # TODO: remove this once it's set by the CLI - strategy: - fail-fast: false - matrix: - repo: [rails/rails, discourse/discourse, spree/spree, ruby/ruby] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - - uses: ./.github/actions/fetch-codeql - - - uses: ./ruby/actions/create-extractor-pack - - - name: Checkout ${{ matrix.repo }} - uses: actions/checkout@v5 - with: - repository: ${{ matrix.repo }} - path: ${{ github.workspace }}/repo - - name: Create database - run: | - codeql database create \ - --search-path "${{ github.workspace }}" \ - --threads 4 \ - --language ruby --source-root "${{ github.workspace }}/repo" \ - "${{ runner.temp }}/database" - - name: Measure database - run: | - mkdir -p "stats/${{ matrix.repo }}" - codeql dataset measure --threads 4 --output "stats/${{ matrix.repo }}/stats.xml" "${{ runner.temp }}/database/db-ruby" - - uses: actions/upload-artifact@v4 - with: - name: measurements-${{ hashFiles('stats/**') }} - path: stats - retention-days: 1 - - merge: - runs-on: ubuntu-latest - needs: measure - steps: - - uses: actions/checkout@v5 - - uses: actions/download-artifact@v4 - with: - path: stats - - run: | - python -m pip install --user lxml - find stats -name 'stats.xml' | sort | xargs python ruby/scripts/merge_stats.py --output ruby/ql/lib/ruby.dbscheme.stats --normalise ruby_tokeninfo - - uses: actions/upload-artifact@v4 - with: - name: ruby.dbscheme.stats - path: ruby/ql/lib/ruby.dbscheme.stats diff --git a/.github/workflows/ruby-qltest-rtjo.yml b/.github/workflows/ruby-qltest-rtjo.yml deleted file mode 100644 index 1d57c465538e..000000000000 --- a/.github/workflows/ruby-qltest-rtjo.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: "Ruby: Run RTJO Language Tests" - -on: - pull_request: - types: - - opened - - synchronize - - reopened - - labeled - -env: - CARGO_TERM_COLOR: always - -defaults: - run: - working-directory: ruby - -permissions: - contents: read - -jobs: - qltest-rtjo: - if: "github.repository_owner == 'github' && github.event.label.name == 'Run: RTJO Language Tests'" - runs-on: ubuntu-latest-xl - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v5 - - uses: ./.github/actions/fetch-codeql - - uses: ./ruby/actions/create-extractor-pack - - name: Cache compilation cache - id: query-cache - uses: ./.github/actions/cache-query-compilation - with: - key: ruby-qltest - - name: Run QL tests - run: | - codeql test run --dynamic-join-order-mode=all --threads=0 --ram 50000 --search-path "${{ github.workspace }}" --check-databases --check-diff-informed --check-undefined-labels --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" - env: - GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml deleted file mode 100644 index e178a5dfb6e0..000000000000 --- a/.github/workflows/ruby-qltest.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: "Ruby: Run QL Tests" - -on: - push: - paths: - - "ruby/**" - - "shared/**" - - .github/workflows/ruby-build.yml - - .github/actions/fetch-codeql/action.yml - - codeql-workspace.yml - branches: - - main - - "rc/*" - pull_request: - paths: - - "ruby/**" - - "shared/**" - - .github/workflows/ruby-qltest.yml - - .github/actions/fetch-codeql/action.yml - - codeql-workspace.yml - branches: - - main - - "rc/*" - -env: - CARGO_TERM_COLOR: always - -defaults: - run: - working-directory: ruby - -permissions: - contents: read - -jobs: - qlupgrade: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - uses: ./.github/actions/fetch-codeql - - name: Check DB upgrade scripts - run: | - echo >empty.trap - codeql dataset import -S ql/lib/upgrades/initial/ruby.dbscheme testdb empty.trap - codeql dataset upgrade testdb --additional-packs ql/lib - diff -q testdb/ruby.dbscheme ql/lib/ruby.dbscheme - - name: Check DB downgrade scripts - run: | - echo >empty.trap - rm -rf testdb; codeql dataset import -S ql/lib/ruby.dbscheme testdb empty.trap - codeql resolve upgrades --format=lines --allow-downgrades --additional-packs downgrades \ - --dbscheme=ql/lib/ruby.dbscheme --target-dbscheme=downgrades/initial/ruby.dbscheme | - xargs codeql execute upgrades testdb - diff -q testdb/ruby.dbscheme downgrades/initial/ruby.dbscheme - qltest: - if: github.repository_owner == 'github' - runs-on: ubuntu-latest-xl - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v5 - - uses: ./.github/actions/fetch-codeql - - uses: ./ruby/actions/create-extractor-pack - - name: Cache compilation cache - id: query-cache - uses: ./.github/actions/cache-query-compilation - with: - key: ruby-qltest - - name: Run QL tests - run: | - codeql test run --threads=0 --ram 50000 --search-path "${{ github.workspace }}" --check-databases --check-diff-informed --check-undefined-labels --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" - env: - GITHUB_TOKEN: ${{ github.token }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e8eed93499f2..0f2906dab310 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,9 +7,9 @@ repos: rev: v3.2.0 hooks: - id: trailing-whitespace - exclude: /test/.*$(? bar.md\n | .github/workflows/artifactpoisoning71.yml:9:9:16:6 | Uses Step | .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | sed -f config foo.md > bar.md\n | .github/workflows/artifactpoisoning71.yml:4:5:4:16 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | .github/workflows/artifactpoisoning81.yml:28:9:31:6 | Uses Step | .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | python test.py | .github/workflows/artifactpoisoning81.yml:3:5:3:23 | pull_request_target | pull_request_target | -| .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | Uses Step | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | make snapshot | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | .github/workflows/artifactpoisoning96.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | npm install | .github/workflows/artifactpoisoning96.yml:2:3:2:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | .github/workflows/artifactpoisoning101.yml:10:9:16:6 | Uses Step | .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | .github/workflows/artifactpoisoning101.yml:4:3:4:21 | pull_request_target | pull_request_target | -| .github/workflows/test18.yml:36:15:40:58 | Uses Step | .github/workflows/test18.yml:12:15:33:12 | Uses Step | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Uses Step | .github/workflows/test18.yml:3:5:3:16 | workflow_run | workflow_run | -| .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | .github/workflows/test25.yml:22:9:32:6 | Uses Step: downloadBuildScan | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | ./gradlew buildScanPublishPrevious\n | .github/workflows/test25.yml:2:3:2:14 | workflow_run | workflow_run | +| .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | +| .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning11.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning11.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning11.yml:38:11:38:77 | ./sonarcloud-data/x.py build -j$(nproc) --compiler gcc --skip-build | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning11.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning12.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning12.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning12.yml:38:11:38:25 | python foo/x.py | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning12.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning21.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning21.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning21.yml:19:14:20:21 | sh foo/cmd\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning21.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning22.yml:13:9:17:6 | Uses Step | .github/workflows/artifactpoisoning22.yml:13:9:17:6 | Uses Step | .github/workflows/artifactpoisoning22.yml:18:14:18:19 | sh cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning22.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning31.yml:13:9:15:6 | Run Step | .github/workflows/artifactpoisoning31.yml:13:9:15:6 | Run Step | .github/workflows/artifactpoisoning31.yml:19:14:19:22 | ./foo/cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning31.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning32.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning32.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning32.yml:17:14:18:20 | ./bar/cmd\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning32.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning33.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning33.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning33.yml:17:14:18:20 | ./bar/cmd\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning33.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning34.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning34.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning34.yml:20:14:22:23 | npm install\nnpm run lint\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning34.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning41.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning41.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning41.yml:22:14:22:22 | ./foo/cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning41.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning42.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning42.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning42.yml:22:14:22:18 | ./cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning42.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning71.yml:9:9:16:6 | Uses Step | .github/workflows/artifactpoisoning71.yml:9:9:16:6 | Uses Step | .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning71.yml:4:5:4:16 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning81.yml:28:9:31:6 | Uses Step | .github/workflows/artifactpoisoning81.yml:28:9:31:6 | Uses Step | .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning81.yml:3:5:3:23 | pull_request_target | pull_request_target | +| .github/workflows/artifactpoisoning96.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning96.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning96.yml:2:3:2:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning101.yml:10:9:16:6 | Uses Step | .github/workflows/artifactpoisoning101.yml:10:9:16:6 | Uses Step | .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning101.yml:4:3:4:21 | pull_request_target | pull_request_target | +| .github/workflows/test18.yml:12:15:33:12 | Uses Step | .github/workflows/test18.yml:12:15:33:12 | Uses Step | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/test18.yml:3:5:3:16 | workflow_run | workflow_run | +| .github/workflows/test25.yml:22:9:32:6 | Uses Step: downloadBuildScan | .github/workflows/test25.yml:22:9:32:6 | Uses Step: downloadBuildScan | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/test25.yml:2:3:2:14 | workflow_run | workflow_run | diff --git a/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected index 33c02079fff8..d4b805999500 100644 --- a/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected +++ b/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected @@ -7,10 +7,12 @@ ql/cpp/ql/src/Diagnostics/ExtractedFiles.ql ql/cpp/ql/src/Diagnostics/ExtractionWarnings.ql ql/cpp/ql/src/Diagnostics/FailedExtractorInvocations.ql ql/cpp/ql/src/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql +ql/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql ql/cpp/ql/src/Likely Bugs/Arithmetic/SignedOverflowCheck.ql ql/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql ql/cpp/ql/src/Likely Bugs/Format/SnprintfOverflow.ql ql/cpp/ql/src/Likely Bugs/Format/WrongNumberOfFormatArguments.ql +ql/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql ql/cpp/ql/src/Likely Bugs/Memory Management/AllocaInLoop.ql ql/cpp/ql/src/Likely Bugs/Memory Management/PointerOverflow.ql ql/cpp/ql/src/Likely Bugs/Memory Management/ReturnStackAllocatedMemory.ql @@ -28,6 +30,7 @@ ql/cpp/ql/src/Security/CWE/CWE-120/VeryLikelyOverrunWrite.ql ql/cpp/ql/src/Security/CWE/CWE-131/NoSpaceForZeroTerminator.ql ql/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql ql/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql +ql/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql ql/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql ql/cpp/ql/src/Security/CWE/CWE-253/HResultBooleanConversion.ql ql/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql @@ -40,6 +43,7 @@ ql/cpp/ql/src/Security/CWE/CWE-367/TOCTOUFilesystemRace.ql ql/cpp/ql/src/Security/CWE/CWE-416/IteratorToExpiredContainer.ql ql/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql ql/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql +ql/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql ql/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql ql/cpp/ql/src/Security/CWE/CWE-611/XXE.ql ql/cpp/ql/src/Security/CWE/CWE-676/DangerousFunctionOverflow.ql @@ -52,5 +56,6 @@ ql/cpp/ql/src/Summary/LinesOfUserCode.ql ql/cpp/ql/src/Telemetry/CompilerErrors.ql ql/cpp/ql/src/Telemetry/DatabaseQuality.ql ql/cpp/ql/src/Telemetry/ExtractionMetrics.ql +ql/cpp/ql/src/Telemetry/ExtractorInformation.ql ql/cpp/ql/src/Telemetry/MissingIncludes.ql ql/cpp/ql/src/Telemetry/SucceededIncludes.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 9ef67d525cd0..cb4e5f7b305a 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 @@ -160,6 +160,7 @@ ql/cpp/ql/src/Summary/LinesOfUserCode.ql ql/cpp/ql/src/Telemetry/CompilerErrors.ql ql/cpp/ql/src/Telemetry/DatabaseQuality.ql ql/cpp/ql/src/Telemetry/ExtractionMetrics.ql +ql/cpp/ql/src/Telemetry/ExtractorInformation.ql ql/cpp/ql/src/Telemetry/MissingIncludes.ql ql/cpp/ql/src/Telemetry/SucceededIncludes.ql ql/cpp/ql/src/jsf/4.06 Pre-Processing Directives/AV Rule 32.ql diff --git a/cpp/ql/integration-tests/query-suite/cpp-security-extended.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-security-extended.qls.expected index f014b6d5dc51..7c5e3d98c5c7 100644 --- a/cpp/ql/integration-tests/query-suite/cpp-security-extended.qls.expected +++ b/cpp/ql/integration-tests/query-suite/cpp-security-extended.qls.expected @@ -93,5 +93,6 @@ ql/cpp/ql/src/Summary/LinesOfUserCode.ql ql/cpp/ql/src/Telemetry/CompilerErrors.ql ql/cpp/ql/src/Telemetry/DatabaseQuality.ql ql/cpp/ql/src/Telemetry/ExtractionMetrics.ql +ql/cpp/ql/src/Telemetry/ExtractorInformation.ql ql/cpp/ql/src/Telemetry/MissingIncludes.ql ql/cpp/ql/src/Telemetry/SucceededIncludes.ql diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index de37c16751ac..5b5bc748c5dd 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,31 @@ +## 9.0.0 + +### Breaking Changes + +* The `SourceModelCsv`, `SinkModelCsv`, and `SummaryModelCsv` classes and the associated CSV parsing infrastructure have been removed from `ExternalFlow.qll`. New models should be added as `.model.yml` files in the `ext/` directory. + +### New Features + +* Added a subclass `MesonPrivateTestFile` of `ConfigurationTestFile` that represents files created by Meson to test the build configuration. +* Added a class `ConstructorDirectFieldInit` to represent field initializations that occur in member initializer lists. +* Added a class `ConstructorDefaultFieldInit` to represent default field initializations. +* Added a class `DataFlow::IndirectParameterNode` to represent the indirection of a parameter as a dataflow node. +* Added a predicate `Node::asIndirectInstruction` which returns the `Instruction` that defines the indirect dataflow node, if any. +* Added a class `IndirectUninitializedNode` to represent the indirection of an uninitialized local variable as a dataflow node. + +### Minor Analysis Improvements + +* Added `HttpReceiveHttpRequest`, `HttpReceiveRequestEntityBody`, and `HttpReceiveClientCertificate` from Win32's `http.h` as remote flow sources. +* Added dataflow through members initialized via non-static data member initialization (NSDMI). + +## 8.0.3 + +No user-facing changes. + +## 8.0.2 + +No user-facing changes. + ## 8.0.1 ### Minor Analysis Improvements diff --git a/cpp/ql/lib/change-notes/2026-04-07-autoconf.md b/cpp/ql/lib/change-notes/2026-04-07-autoconf.md new file mode 100644 index 000000000000..9f04417b8e25 --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-04-07-autoconf.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a subclass `AutoconfConfigureTestFile` of `ConfigurationTestFile` that represents files created by GNU autoconf configure scripts to test the build configuration. diff --git a/cpp/ql/lib/change-notes/2026-04-14-throwing.md b/cpp/ql/lib/change-notes/2026-04-14-throwing.md new file mode 100644 index 000000000000..6a15437e126e --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-04-14-throwing.md @@ -0,0 +1,5 @@ +--- +category: breaking +--- +* The deprecated `NonThrowingFunction` class has been removed, use `NonCppThrowingFunction` instead. +* The deprecated `ThrowingFunction` class has been removed, use `AlwaysSehThrowingFunction` instead. diff --git a/cpp/ql/lib/change-notes/released/8.0.2.md b/cpp/ql/lib/change-notes/released/8.0.2.md new file mode 100644 index 000000000000..8119db7ca7b0 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/8.0.2.md @@ -0,0 +1,3 @@ +## 8.0.2 + +No user-facing changes. diff --git a/cpp/ql/lib/change-notes/released/8.0.3.md b/cpp/ql/lib/change-notes/released/8.0.3.md new file mode 100644 index 000000000000..de146c6309ec --- /dev/null +++ b/cpp/ql/lib/change-notes/released/8.0.3.md @@ -0,0 +1,3 @@ +## 8.0.3 + +No user-facing changes. diff --git a/cpp/ql/lib/change-notes/released/9.0.0.md b/cpp/ql/lib/change-notes/released/9.0.0.md new file mode 100644 index 000000000000..2f97209a02d2 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/9.0.0.md @@ -0,0 +1,19 @@ +## 9.0.0 + +### Breaking Changes + +* The `SourceModelCsv`, `SinkModelCsv`, and `SummaryModelCsv` classes and the associated CSV parsing infrastructure have been removed from `ExternalFlow.qll`. New models should be added as `.model.yml` files in the `ext/` directory. + +### New Features + +* Added a subclass `MesonPrivateTestFile` of `ConfigurationTestFile` that represents files created by Meson to test the build configuration. +* Added a class `ConstructorDirectFieldInit` to represent field initializations that occur in member initializer lists. +* Added a class `ConstructorDefaultFieldInit` to represent default field initializations. +* Added a class `DataFlow::IndirectParameterNode` to represent the indirection of a parameter as a dataflow node. +* Added a predicate `Node::asIndirectInstruction` which returns the `Instruction` that defines the indirect dataflow node, if any. +* Added a class `IndirectUninitializedNode` to represent the indirection of an uninitialized local variable as a dataflow node. + +### Minor Analysis Improvements + +* Added `HttpReceiveHttpRequest`, `HttpReceiveRequestEntityBody`, and `HttpReceiveClientCertificate` from Win32's `http.h` as remote flow sources. +* Added dataflow through members initialized via non-static data member initialization (NSDMI). diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 145ae8f5b473..fd5f4a48b3c1 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 8.0.1 +lastReleaseVersion: 9.0.0 diff --git a/cpp/ql/lib/ext/Windows.model.yml b/cpp/ql/lib/ext/Windows.model.yml index a2ec30d95bda..6794e9a86641 100644 --- a/cpp/ql/lib/ext/Windows.model.yml +++ b/cpp/ql/lib/ext/Windows.model.yml @@ -31,6 +31,9 @@ extensions: - ["", "", False, "WinHttpQueryHeadersEx", "", "", "Argument[*5]", "remote", "manual"] - ["", "", False, "WinHttpQueryHeadersEx", "", "", "Argument[*6]", "remote", "manual"] - ["", "", False, "WinHttpQueryHeadersEx", "", "", "Argument[**8]", "remote", "manual"] + - ["", "", False, "HttpReceiveHttpRequest", "", "", "Argument[*3]", "remote", "manual"] + - ["", "", False, "HttpReceiveRequestEntityBody", "", "", "Argument[*3]", "remote", "manual"] + - ["", "", False, "HttpReceiveClientCertificate", "", "", "Argument[*3]", "remote", "manual"] - addsTo: pack: codeql/cpp-all extensible: summaryModel diff --git a/cpp/ql/lib/ext/ZMQ.model.yml b/cpp/ql/lib/ext/ZMQ.model.yml new file mode 100644 index 000000000000..62c3bb1a3bfe --- /dev/null +++ b/cpp/ql/lib/ext/ZMQ.model.yml @@ -0,0 +1,22 @@ +# ZeroMQ networking library models +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: sourceModel + data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance + - ["", "", False, "zmq_recv", "", "", "Argument[*1]", "remote", "manual"] + - ["", "", False, "zmq_recvmsg", "", "", "Argument[*1]", "remote", "manual"] + - ["", "", False, "zmq_msg_recv", "", "", "Argument[*0]", "remote", "manual"] + - addsTo: + pack: codeql/cpp-all + extensible: sinkModel + data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance + - ["", "", False, "zmq_send", "", "", "Argument[*1]", "remote-sink", "manual"] + - ["", "", False, "zmq_sendmsg", "", "", "Argument[*1]", "remote-sink", "manual"] + - ["", "", False, "zmq_msg_send", "", "", "Argument[*0]", "remote-sink", "manual"] + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "", False, "zmq_msg_init_data", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "zmq_msg_data", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/allocation/Std.allocation.model.yml b/cpp/ql/lib/ext/allocation/Std.allocation.model.yml index 16b3d5bcebad..227cc4176c0d 100644 --- a/cpp/ql/lib/ext/allocation/Std.allocation.model.yml +++ b/cpp/ql/lib/ext/allocation/Std.allocation.model.yml @@ -12,4 +12,7 @@ extensions: - ["", "", False, "_malloca", "0", "", "", False] - ["", "", False, "calloc", "1", "0", "", True] - ["std", "", False, "calloc", "1", "0", "", True] - - ["bsl", "", False, "calloc", "1", "0", "", True] \ No newline at end of file + - ["bsl", "", False, "calloc", "1", "0", "", True] + - ["", "", False, "aligned_alloc", "1", "", "", True] + - ["std", "", False, "aligned_alloc", "1", "", "", True] + - ["bsl", "", False, "aligned_alloc", "1", "", "", True] diff --git a/cpp/ql/lib/ext/getc.model.yml b/cpp/ql/lib/ext/getc.model.yml new file mode 100644 index 000000000000..43958205e0b1 --- /dev/null +++ b/cpp/ql/lib/ext/getc.model.yml @@ -0,0 +1,19 @@ +# Models for getc and similar character-reading functions +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: sourceModel + data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance + - ["", "", False, "getc", "", "", "ReturnValue", "remote", "manual"] + - ["", "", False, "getwc", "", "", "ReturnValue", "remote", "manual"] + - ["", "", False, "_getc_nolock", "", "", "ReturnValue", "remote", "manual"] + - ["", "", False, "_getwc_nolock", "", "", "ReturnValue", "remote", "manual"] + - ["", "", False, "getch", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "_getch", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "_getwch", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "_getch_nolock", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "_getwch_nolock", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "getchar", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "getwchar", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "_getchar_nolock", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "_getwchar_nolock", "", "", "ReturnValue", "local", "manual"] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 286288140c49..dbf57d2b8699 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 8.0.1 +version: 9.0.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll b/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll index fe89a556f74f..ae90caa0e637 100644 --- a/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll +++ b/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll @@ -26,3 +26,26 @@ class CmakeTryCompileFile extends ConfigurationTestFile { ) } } + +/** + * A file created by Meson to test the system configuration. + */ +class MesonPrivateTestFile extends ConfigurationTestFile { + MesonPrivateTestFile() { + this.getBaseName() = "testfile.c" and + exists(Folder folder, Folder parent | + folder = this.getParentContainer() and + parent = folder.getParentContainer() + | + folder.getBaseName().matches("tmp%") and + parent.getBaseName() = "meson-private" + ) + } +} + +/** + * A file created by a GNU autoconf configure script to test the system configuration. + */ +class AutoconfConfigureTestFile extends ConfigurationTestFile { + AutoconfConfigureTestFile() { this.getBaseName().regexpMatch("conftest[0-9]*\\.c(pp)?") } +} diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index 10b156e3fb64..8d93ac0f2a3a 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -524,6 +524,12 @@ class Function extends Declaration, ControlFlowNode, AccessHolder, @function { not exists(NewOrNewArrayExpr new | e = new.getAllocatorCall().getArgument(0)) ) } + + /** + * Holds if this function has an ambiguous return type, meaning that zero or multiple return + * types for this function are present in the database (this can occur in `build-mode: none`). + */ + predicate hasAmbiguousReturnType() { count(this.getType()) != 1 } } pragma[noinline] diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll b/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll index 023ce09c5c18..624465761c2c 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll @@ -163,12 +163,23 @@ predicate primitiveVariadicFormatter( ) } +/** + * Gets a function call whose target is a variadic formatter with the given + * `type`, `format` parameter index and `output` parameter index. + * + * Join-order helper for `callsVariadicFormatter`. + */ +pragma[nomagic] +private predicate callsVariadicFormatterCall(FunctionCall fc, string type, int format, int output) { + variadicFormatter(fc.getTarget(), type, format, output) +} + private predicate callsVariadicFormatter( Function f, string type, int formatParamIndex, int outputParamIndex ) { // calls a variadic formatter with `formatParamIndex`, `outputParamIndex` linked exists(FunctionCall fc, int format, int output | - variadicFormatter(pragma[only_bind_into](fc.getTarget()), type, format, output) and + callsVariadicFormatterCall(fc, type, format, output) and fc.getEnclosingFunction() = f and fc.getArgument(format) = f.getParameter(formatParamIndex).getAnAccess() and fc.getArgument(output) = f.getParameter(outputParamIndex).getAnAccess() @@ -176,7 +187,7 @@ private predicate callsVariadicFormatter( or // calls a variadic formatter with only `formatParamIndex` linked exists(FunctionCall fc, string calledType, int format, int output | - variadicFormatter(pragma[only_bind_into](fc.getTarget()), calledType, format, output) and + callsVariadicFormatterCall(fc, calledType, format, output) and fc.getEnclosingFunction() = f and fc.getArgument(format) = f.getParameter(formatParamIndex).getAnAccess() and not fc.getArgument(output) = f.getParameter(_).getAnAccess() and @@ -448,6 +459,13 @@ class FormatLiteral extends Literal instanceof StringLiteral { */ int getConvSpecOffset(int n) { result = this.getFormat().indexOf("%", n, 0) } + /** + * Gets the nth conversion specifier string. + */ + private string getConvSpecString(int n) { + n >= 0 and result = "%" + this.getFormat().splitAt("%", n + 1) + } + /* * Each of these predicates gets a regular expressions to match each individual * parts of a conversion specifier. @@ -513,22 +531,20 @@ class FormatLiteral extends Literal instanceof StringLiteral { int n, string spec, string params, string flags, string width, string prec, string len, string conv ) { - exists(int offset, string fmt, string rst, string regexp | - offset = this.getConvSpecOffset(n) and - fmt = this.getFormat() and - rst = fmt.substring(offset, fmt.length()) and + exists(string convSpec, string regexp | + convSpec = this.getConvSpecString(n) and regexp = this.getConvSpecRegexp() and ( - spec = rst.regexpCapture(regexp, 1) and - params = rst.regexpCapture(regexp, 2) and - flags = rst.regexpCapture(regexp, 3) and - width = rst.regexpCapture(regexp, 4) and - prec = rst.regexpCapture(regexp, 5) and - len = rst.regexpCapture(regexp, 6) and - conv = rst.regexpCapture(regexp, 7) + spec = convSpec.regexpCapture(regexp, 1) and + params = convSpec.regexpCapture(regexp, 2) and + flags = convSpec.regexpCapture(regexp, 3) and + width = convSpec.regexpCapture(regexp, 4) and + prec = convSpec.regexpCapture(regexp, 5) and + len = convSpec.regexpCapture(regexp, 6) and + conv = convSpec.regexpCapture(regexp, 7) or - spec = rst.regexpCapture(regexp, 1) and - not exists(rst.regexpCapture(regexp, 2)) and + spec = convSpec.regexpCapture(regexp, 1) and + not exists(convSpec.regexpCapture(regexp, 2)) and params = "" and flags = "" and width = "" and @@ -543,12 +559,10 @@ class FormatLiteral extends Literal instanceof StringLiteral { * Gets the nth conversion specifier (including the initial `%`). */ string getConvSpec(int n) { - exists(int offset, string fmt, string rst, string regexp | - offset = this.getConvSpecOffset(n) and - fmt = this.getFormat() and - rst = fmt.substring(offset, fmt.length()) and + exists(string convSpec, string regexp | + convSpec = this.getConvSpecString(n) and regexp = this.getConvSpecRegexp() and - result = rst.regexpCapture(regexp, 1) + result = convSpec.regexpCapture(regexp, 1) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll b/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll index f032ba4749e6..98280a522cfd 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll @@ -194,6 +194,13 @@ class ScanfFormatLiteral extends Expr { ) } + /** + * Gets the nth conversion specifier string. + */ + private string getConvSpecString(int n) { + n >= 0 and result = "%" + this.getFormat().splitAt("%", n + 1) + } + /** * Gets the regular expression to match each individual part of a conversion specifier. */ @@ -227,16 +234,14 @@ class ScanfFormatLiteral extends Expr { * specifier. */ predicate parseConvSpec(int n, string spec, string width, string len, string conv) { - exists(int offset, string fmt, string rst, string regexp | - offset = this.getConvSpecOffset(n) and - fmt = this.getFormat() and - rst = fmt.substring(offset, fmt.length()) and + exists(string convSpec, string regexp | + convSpec = this.getConvSpecString(n) and regexp = this.getConvSpecRegexp() and ( - spec = rst.regexpCapture(regexp, 1) and - width = rst.regexpCapture(regexp, 2) and - len = rst.regexpCapture(regexp, 3) and - conv = rst.regexpCapture(regexp, 4) + spec = convSpec.regexpCapture(regexp, 1) and + width = convSpec.regexpCapture(regexp, 2) and + len = convSpec.regexpCapture(regexp, 3) and + conv = convSpec.regexpCapture(regexp, 4) ) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 7cf3b937ac51..fb2108c2ac58 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -1,15 +1,20 @@ /** * INTERNAL use only. This is an experimental API subject to change without notice. * - * Provides classes and predicates for dealing with flow models specified in CSV format. + * Provides classes and predicates for dealing with flow models specified + * in data extension files. * - * The CSV specification has the following columns: + * The extensible relations have the following columns: * - Sources: - * `namespace; type; subtypes; name; signature; ext; output; kind` + * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` * - Sinks: - * `namespace; type; subtypes; name; signature; ext; input; kind` + * `namespace; type; subtypes; name; signature; ext; input; kind; provenance` * - Summaries: - * `namespace; type; subtypes; name; signature; ext; input; output; kind` + * `namespace; type; subtypes; name; signature; ext; input; output; kind; provenance` + * - Barriers: + * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` + * - BarrierGuards: + * `namespace; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` * * The interpretation of a row is similar to API-graphs with a left-to-right * reading. @@ -86,11 +91,23 @@ * value, and * - flow from the _second_ indirection of the 0th argument to the first * indirection of the return value, etc. - * 8. The `kind` column is a tag that can be referenced from QL to determine to + * 8. The `acceptingValue` column of barrier guard models specifies the condition + * under which the guard blocks flow. It can be one of "true" or "false". In + * the future "no-exception", "not-zero", "null", "not-null" may be supported. + * 9. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. + * 10. The `provenance` column is a tag to indicate the origin and verification of a model. + * The format is {origin}-{verification} or just "manual" where the origin describes + * the origin of the model and verification describes how the model has been verified. + * Some examples are: + * - "df-generated": The model has been generated by the model generator tool. + * - "df-manual": The model has been generated by the model generator and verified by a human. + * - "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. */ import cpp @@ -104,117 +121,9 @@ private import internal.FlowSummaryImpl::Private private import internal.FlowSummaryImpl::Private::External private import internal.ExternalFlowExtensions::Extensions as Extensions private import codeql.mad.ModelValidation as SharedModelVal -private import codeql.util.Unit private import codeql.mad.static.ModelsAsData as SharedMaD -/** - * A unit class for adding additional source model rows. - * - * Extend this class to add additional source definitions. - */ -class SourceModelCsv extends Unit { - /** Holds if `row` specifies a source definition. */ - abstract predicate row(string row); -} - -/** - * A unit class for adding additional sink model rows. - * - * Extend this class to add additional sink definitions. - */ -class SinkModelCsv extends Unit { - /** Holds if `row` specifies a sink definition. */ - abstract predicate row(string row); -} - -/** - * A unit class for adding additional summary model rows. - * - * Extend this class to add additional flow summary definitions. - */ -class SummaryModelCsv extends Unit { - /** Holds if `row` specifies a summary definition. */ - abstract predicate row(string row); -} - -/** Holds if `row` is a source model. */ -predicate sourceModel(string row) { any(SourceModelCsv s).row(row) } - -/** Holds if `row` is a sink model. */ -predicate sinkModel(string row) { any(SinkModelCsv s).row(row) } - -/** Holds if `row` is a summary model. */ -predicate summaryModel(string row) { any(SummaryModelCsv s).row(row) } - private module MadInput implements SharedMaD::InputSig { - /** Holds if a source model exists for the given parameters. */ - predicate additionalSourceModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string output, string kind, string provenance, string model - ) { - exists(string row | - sourceModel(row) and - row.splitAt(";", 0) = namespace and - row.splitAt(";", 1) = type and - row.splitAt(";", 2) = subtypes.toString() and - subtypes = [true, false] and - row.splitAt(";", 3) = name and - row.splitAt(";", 4) = signature and - row.splitAt(";", 5) = ext and - row.splitAt(";", 6) = output and - row.splitAt(";", 7) = kind - ) and - provenance = "manual" and - model = "" - } - - /** Holds if a sink model exists for the given parameters. */ - predicate additionalSinkModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string kind, string provenance, string model - ) { - exists(string row | - sinkModel(row) and - row.splitAt(";", 0) = namespace and - row.splitAt(";", 1) = type and - row.splitAt(";", 2) = subtypes.toString() and - subtypes = [true, false] and - row.splitAt(";", 3) = name and - row.splitAt(";", 4) = signature and - row.splitAt(";", 5) = ext and - row.splitAt(";", 6) = input and - row.splitAt(";", 7) = kind - ) and - provenance = "manual" and - model = "" - } - - /** - * Holds if a summary model exists for the given parameters. - * - * This predicate does not expand `@` to `*`s. - */ - predicate additionalSummaryModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string output, string kind, string provenance, string model - ) { - exists(string row | - summaryModel(row) and - row.splitAt(";", 0) = namespace and - row.splitAt(";", 1) = type and - row.splitAt(";", 2) = subtypes.toString() and - subtypes = [true, false] and - row.splitAt(";", 3) = name and - row.splitAt(";", 4) = signature and - row.splitAt(";", 5) = ext and - row.splitAt(";", 6) = input and - row.splitAt(";", 7) = output and - row.splitAt(";", 8) = kind - ) and - provenance = "manual" and - model = "" - } - string namespaceSegmentSeparator() { result = "::" } } @@ -250,8 +159,8 @@ predicate summaryModel( ) } -/** Provides a query predicate to check the CSV data for validation errors. */ -module CsvValidation { +/** Provides a query predicate to check the data for validation errors. */ +module ModelValidation { private string getInvalidModelInput() { exists(string pred, AccessPath input, string part | sinkModel(_, _, _, _, _, _, input, _, _, _) and pred = "sink" @@ -294,40 +203,6 @@ module CsvValidation { private module KindVal = SharedModelVal::KindValidation; - private string getInvalidModelSubtype() { - exists(string pred, string row | - sourceModel(row) and pred = "source" - or - sinkModel(row) and pred = "sink" - or - summaryModel(row) and pred = "summary" - | - exists(string b | - b = row.splitAt(";", 2) and - not b = ["true", "false"] and - result = "Invalid boolean \"" + b + "\" in " + pred + " model." - ) - ) - } - - private string getInvalidModelColumnCount() { - exists(string pred, string row, int expect | - sourceModel(row) and expect = 8 and pred = "source" - or - sinkModel(row) and expect = 8 and pred = "sink" - or - summaryModel(row) and expect = 9 and pred = "summary" - | - exists(int cols | - cols = 1 + max(int n | exists(row.splitAt(";", n))) and - cols != expect and - result = - "Wrong number of columns in " + pred + " model row, expected " + expect + ", got " + cols + - "." - ) - ) - } - private string getInvalidModelSignature() { exists(string pred, string namespace, string type, string name, string signature, string ext | sourceModel(namespace, type, _, name, signature, ext, _, _, _, _) and pred = "source" @@ -366,13 +241,12 @@ module CsvValidation { ) } - /** Holds if some row in a CSV-based flow model appears to contain typos. */ + /** Holds if some row in a MaD flow model appears to contain typos. */ query predicate invalidModelRow(string msg) { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelSubtype(), getInvalidModelColumnCount(), KindVal::getInvalidModelKind(), - getIncorrectConstructorSummaryOutput() + KindVal::getInvalidModelKind(), getIncorrectConstructorSummaryOutput() ] } } @@ -1026,7 +900,7 @@ private module Cached { } /** - * Holds if `node` is specified as a source with the given kind in a CSV flow + * Holds if `node` is specified as a source with the given kind in a MaD flow * model. */ cached @@ -1037,7 +911,7 @@ private module Cached { } /** - * Holds if `node` is specified as a sink with the given kind in a CSV flow + * Holds if `node` is specified as a sink with the given kind in a MaD flow * model. */ cached @@ -1073,13 +947,13 @@ private module Cached { private predicate barrierGuardChecks(IRGuardCondition g, Expr e, boolean gv, TKindModelPair kmp) { exists( - SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingvalue, + SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingValue, string kind, string model | - isBarrierGuardNode(n, acceptingvalue, kind, model) and + isBarrierGuardNode(n, acceptingValue, kind, model) and n.asNode().asExpr() = e and kmp = TMkPair(kind, model) and - gv = convertAcceptingValue(acceptingvalue).asBooleanValue() and + gv = convertAcceptingValue(acceptingValue).asBooleanValue() and n.asNode().(Private::ArgumentNode).getCall().asCallInstruction() = g ) } @@ -1096,14 +970,14 @@ private module Cached { ) { exists( SourceSinkInterpretationInput::InterpretNode interpretNode, - Public::AcceptingValue acceptingvalue, string kind, string model, int indirectionIndex, + Public::AcceptingValue acceptingValue, string kind, string model, int indirectionIndex, Private::ArgumentNode arg | - isBarrierGuardNode(interpretNode, acceptingvalue, kind, model) and + isBarrierGuardNode(interpretNode, acceptingValue, kind, model) and arg = interpretNode.asNode() and arg.asIndirectExpr(indirectionIndex) = e and kmp = MkKindModelPairIntPair(TMkPair(kind, model), indirectionIndex) and - gv = convertAcceptingValue(acceptingvalue).asBooleanValue() and + gv = convertAcceptingValue(acceptingValue).asBooleanValue() and arg.getCall().asCallInstruction() = g ) } 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 1a572c221d9f..22c74c2aa714 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll @@ -33,7 +33,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** 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 cce1b80e7fcb..d91dc41febeb 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll @@ -162,13 +162,13 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingvalue, kind, + barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance, model) and e = interpretElement(package, type, subtypes, name, signature, ext) ) diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll index 4ef241e3d258..66a89490dd09 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Call.qll @@ -585,12 +585,15 @@ class ConstructorDelegationInit extends ConstructorBaseInit, @ctordelegatinginit /** * An initialization of a member variable performed as part of a - * constructor's explicit initializer list or implicit actions. + * constructor's initializer list or by default initialization. + * * In the example below, member variable `b` is being initialized by - * constructor parameter `a`: + * constructor parameter `a`, and `c` is initialized by default + * initialization: * ``` * struct S { * int b; + * int c = 3; * S(int a): b(a) {} * } s(2); * ``` @@ -616,6 +619,28 @@ class ConstructorFieldInit extends ConstructorInit, @ctorfieldinit { override predicate mayBeGloballyImpure() { this.getExpr().mayBeGloballyImpure() } } +/** + * An initialization of a member variable performed as part of a + * constructor's explicit initializer list. + */ +class ConstructorDirectFieldInit extends ConstructorFieldInit { + ConstructorDirectFieldInit() { exists(this.getChild(0)) } + + override string getAPrimaryQlClass() { result = "ConstructorDirectFieldInit" } +} + +/** + * An initialization of a member variable performed by default + * initialization. + */ +class ConstructorDefaultFieldInit extends ConstructorFieldInit { + ConstructorDefaultFieldInit() { + not exists(this.getChild(0)) and exists(this.getTarget().getInitializer()) + } + + override string getAPrimaryQlClass() { result = "ConstructorDefaultFieldInit" } +} + /** * A call to a destructor of a base class or field as part of a destructor's * compiler-generated actions. 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 0d63558c956e..bce936552768 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 @@ -238,7 +238,12 @@ private module TrackVirtualDispatch { private import TypeTracking::TypeTrack::Graph - private predicate edgePlus(PathNode n1, PathNode n2) = fastTC(edges/2)(n1, n2) + private predicate isSource(PathNode n) { n.isSource() } + + private predicate isSink(PathNode n) { n.isSink() } + + private predicate edgePlus(PathNode n1, PathNode n2) = + doublyBoundedFastTC(edges/2, isSource/1, isSink/1)(n1, n2) /** * Gets the most specific implementation of `mf` that may be called when the @@ -255,6 +260,15 @@ private module TrackVirtualDispatch { ) } + pragma[nomagic] + private MemberFunction mostSpecificForSource(PathNode p1, MemberFunction mf) { + p1.isSource() and + exists(Class derived | + qualifierSourceImpl(p1.getNode(), derived) and + result = mostSpecific(mf, derived) + ) + } + /** * Gets a possible pair of end-points `(p1, p2)` where: * - `p1` is a derived-to-base conversion that converts from some @@ -264,16 +278,16 @@ private module TrackVirtualDispatch { * - `callable` is the most specific implementation that may be called when * the qualifier has type `derived`. */ + bindingset[p1, p2] + pragma[inline_late] private predicate pairCand( PathNode p1, PathNode p2, DataFlowPrivate::DataFlowCallable callable, DataFlowPrivate::DataFlowCall call ) { - exists(Class derived, MemberFunction mf | - qualifierSourceImpl(p1.getNode(), derived) and + p2.isSink() and + exists(MemberFunction mf | qualifierOfVirtualCallImpl(p2.getNode(), call.asCallInstruction(), mf) and - p1.isSource() and - p2.isSink() and - callable.asSourceCallable() = mostSpecific(mf, derived) + callable.asSourceCallable() = mostSpecificForSource(p1, mf) ) } 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 fe954c640d1b..bcf6a0d512c3 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 @@ -321,6 +321,12 @@ module Public { */ Operand asIndirectOperand(int index) { hasOperandAndIndex(this, result, index) } + /** + * Gets the instruction that is indirectly tracked by this node behind + * `index` number of indirections. + */ + Instruction asIndirectInstruction(int index) { hasInstructionAndIndex(this, result, index) } + /** * Holds if this node is at index `i` in basic block `block`. * @@ -617,6 +623,25 @@ module Public { */ LocalVariable asUninitialized() { result = this.(UninitializedNode).getLocalVariable() } + /** + * Gets the uninitialized local variable corresponding to this node behind + * `index` number of indirections, if any. + */ + LocalVariable asIndirectUninitialized(int index) { + exists(IndirectUninitializedNode indirectUninitializedNode | + this = indirectUninitializedNode and + indirectUninitializedNode.getIndirectionIndex() = index + | + result = indirectUninitializedNode.getLocalVariable() + ) + } + + /** + * Gets the uninitialized local variable corresponding to this node behind + * a number indirections, if any. + */ + LocalVariable asIndirectUninitialized() { result = this.asIndirectUninitialized(_) } + /** * Gets the positional parameter corresponding to the node that represents * the value of the parameter after `index` number of loads, if any. For @@ -761,16 +786,13 @@ module Public { final override Type getType() { result = this.getPreUpdateNode().getType() } } - /** - * The value of an uninitialized local variable, viewed as a node in a data - * flow graph. - */ - class UninitializedNode extends Node { + abstract private class AbstractUninitializedNode extends Node { LocalVariable v; + int indirectionIndex; - UninitializedNode() { + AbstractUninitializedNode() { exists(SsaImpl::Definition def, SsaImpl::SourceVariable sv | - def.getIndirectionIndex() = 0 and + def.getIndirectionIndex() = indirectionIndex and def.getValue().asInstruction() instanceof UninitializedInstruction and SsaImpl::defToNode(this, def, sv) and v = sv.getBaseVariable().(SsaImpl::BaseIRVariable).getIRVariable().getAst() @@ -781,6 +803,25 @@ module Public { LocalVariable getLocalVariable() { result = v } } + /** + * The value of an uninitialized local variable, viewed as a node in a data + * flow graph. + */ + class UninitializedNode extends AbstractUninitializedNode { + UninitializedNode() { indirectionIndex = 0 } + } + + /** + * The value of an uninitialized local variable behind one or more levels of + * indirection, viewed as a node in a data flow graph. + */ + class IndirectUninitializedNode extends AbstractUninitializedNode { + IndirectUninitializedNode() { indirectionIndex > 0 } + + /** Gets the indirection index of this node. */ + int getIndirectionIndex() { result = indirectionIndex } + } + /** * The value of a parameter at function entry, viewed as a node in a data * flow graph. This includes both explicit parameters such as `x` in `f(x)` @@ -795,6 +836,12 @@ module Public { /** An explicit positional parameter, including `this`, but not `...`. */ final class DirectParameterNode = AbstractDirectParameterNode; + /** + * A node representing an indirection of a positional parameter, + * including `*this`, but not `*...`. + */ + final class IndirectParameterNode = AbstractIndirectParameterNode; + final class ExplicitParameterNode = AbstractExplicitParameterNode; /** An implicit `this` parameter. */ @@ -803,11 +850,6 @@ module Public { { ThisParameterInstructionNode() { instr.getIRVariable() instanceof IRThisVariable } - override predicate isSourceParameterOf(Function f, ParameterPosition pos) { - pos.(DirectPosition).getArgumentIndex() = -1 and - instr.getEnclosingFunction() = f - } - override string toStringImpl() { result = "this" } } @@ -831,7 +873,11 @@ module Public { /** Gets the parameter through which this value is assigned. */ Parameter getParameter() { - result = this.getCallInstruction().getStaticCallTarget().getParameter(this.getArgumentIndex()) + result = + this.getCallInstruction() + .getStaticCallTarget() + .(Function) + .getParameter(this.getArgumentIndex()) } } @@ -954,11 +1000,6 @@ module Public { private import Public -/** - * A node representing an indirection of a parameter. - */ -final class IndirectParameterNode = AbstractIndirectParameterNode; - /** * A class that lifts pre-SSA dataflow nodes to regular dataflow nodes. */ @@ -1083,7 +1124,7 @@ class IndirectArgumentOutNode extends PostUpdateNodeImpl { /** * Gets the `Function` that the call targets, if this is statically known. */ - Function getStaticCallTarget() { result = this.getCallInstruction().getStaticCallTarget() } + Declaration getStaticCallTarget() { result = this.getCallInstruction().getStaticCallTarget() } override string toStringImpl() { exists(string prefix | if indirectionIndex > 0 then prefix = "" else prefix = "pointer to " | @@ -1587,7 +1628,7 @@ abstract private class AbstractParameterNode extends Node { * implicit `this` parameter is considered to have position `-1`, and * pointer-indirection parameters are at further negative positions. */ - predicate isSourceParameterOf(Function f, ParameterPosition pos) { none() } + predicate isSourceParameterOf(Declaration f, ParameterPosition pos) { none() } /** * Holds if this node is the parameter of `sc` at the specified position. The @@ -1613,6 +1654,11 @@ abstract private class AbstractParameterNode extends Node { /** Gets the `Parameter` associated with this node, if it exists. */ Parameter getParameter() { none() } // overridden by subclasses + + /** + * Holds if this node represents an implicit `this` parameter, if it exists. + */ + predicate isThis() { none() } // overridden by subclasses } abstract private class AbstractIndirectParameterNode extends AbstractParameterNode { @@ -1641,7 +1687,9 @@ private class IndirectInstructionParameterNode extends AbstractIndirectParameter InitializeParameterInstruction init; IndirectInstructionParameterNode() { - IndirectInstruction.super.hasInstructionAndIndirectionIndex(init, _) + IndirectInstruction.super.hasInstructionAndIndirectionIndex(init, _) and + // We don't model catch parameters as parameter nodes + not exists(init.getParameter().getCatchBlock()) } int getArgumentIndex() { init.hasIndex(result) } @@ -1655,16 +1703,17 @@ private class IndirectInstructionParameterNode extends AbstractIndirectParameter ) } - /** Gets the parameter whose indirection is initialized. */ override Parameter getParameter() { result = init.getParameter() } + override predicate isThis() { init.hasIndex(-1) } + override DataFlowCallable getEnclosingCallable() { result.asSourceCallable() = this.getFunction() } override Declaration getFunction() { result = init.getEnclosingFunction() } - override predicate isSourceParameterOf(Function f, ParameterPosition pos) { + override predicate isSourceParameterOf(Declaration f, ParameterPosition pos) { this.getFunction() = f and exists(int argumentIndex, int indirectionIndex | indirectPositionHasArgumentIndexAndIndex(pos, argumentIndex, indirectionIndex) and @@ -1692,6 +1741,18 @@ abstract class InstructionDirectParameterNode extends InstructionNode, AbstractD * Gets the `IRVariable` that this parameter references. */ final IRVariable getIRVariable() { result = instr.getIRVariable() } + + override predicate isThis() { instr.hasIndex(-1) } + + override Parameter getParameter() { result = instr.getParameter() } + + override predicate isSourceParameterOf(Declaration f, ParameterPosition pos) { + this.getFunction() = f and + exists(int argumentIndex | + pos.(DirectPosition).getArgumentIndex() = argumentIndex and + instr.hasIndex(argumentIndex) + ) + } } abstract private class AbstractExplicitParameterNode extends AbstractDirectParameterNode { } @@ -1700,15 +1761,12 @@ abstract private class AbstractExplicitParameterNode extends AbstractDirectParam private class ExplicitParameterInstructionNode extends AbstractExplicitParameterNode, InstructionDirectParameterNode { - ExplicitParameterInstructionNode() { exists(instr.getParameter()) } - - override predicate isSourceParameterOf(Function f, ParameterPosition pos) { - f.getParameter(pos.(DirectPosition).getArgumentIndex()) = instr.getParameter() + ExplicitParameterInstructionNode() { + // We don't model catch parameters as parameter nodes. + exists(instr.getParameter().getFunction()) } override string toStringImpl() { result = instr.getParameter().toString() } - - override Parameter getParameter() { result = instr.getParameter() } } /** @@ -1736,9 +1794,9 @@ private class DirectBodyLessParameterNode extends AbstractExplicitParameterNode, { DirectBodyLessParameterNode() { indirectionIndex = 0 } - override predicate isSourceParameterOf(Function f, ParameterPosition pos) { + override predicate isSourceParameterOf(Declaration f, ParameterPosition pos) { this.getFunction() = f and - f.getParameter(pos.(DirectPosition).getArgumentIndex()) = p + f.(Function).getParameter(pos.(DirectPosition).getArgumentIndex()) = p } override Parameter getParameter() { result = p } @@ -1749,10 +1807,10 @@ private class IndirectBodyLessParameterNode extends AbstractIndirectParameterNod { IndirectBodyLessParameterNode() { not this instanceof DirectBodyLessParameterNode } - override predicate isSourceParameterOf(Function f, ParameterPosition pos) { + override predicate isSourceParameterOf(Declaration f, ParameterPosition pos) { exists(int argumentPosition | this.getFunction() = f and - f.getParameter(argumentPosition) = p and + f.(Function).getParameter(argumentPosition) = p and indirectPositionHasArgumentIndexAndIndex(pos, argumentPosition, indirectionIndex) ) } 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 6dd953b16ab5..83f240ddae51 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 @@ -1170,7 +1170,7 @@ class DataFlowCall extends TDataFlowCall { /** * Gets the `Function` that the call targets, if this is statically known. */ - Function getStaticCallSourceTarget() { none() } + Declaration getStaticCallSourceTarget() { none() } /** * Gets the target of this call. We use the following strategy for deciding @@ -1182,7 +1182,7 @@ class DataFlowCall extends TDataFlowCall { * whether is it manual or generated. */ final DataFlowCallable getStaticCallTarget() { - exists(Function target | target = this.getStaticCallSourceTarget() | + 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 | @@ -1242,7 +1242,7 @@ private class NormalCall extends DataFlowCall, TNormalCall { override CallTargetOperand getCallTargetOperand() { result = call.getCallTargetOperand() } - override Function getStaticCallSourceTarget() { result = call.getStaticCallTarget() } + override Declaration getStaticCallSourceTarget() { result = call.getStaticCallTarget() } override ArgumentOperand getArgumentOperand(int index) { result = call.getArgumentOperand(index) } 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 45a6755356b5..e4734f285fa7 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 @@ -11,13 +11,18 @@ private import TypeFlow private import semmle.code.cpp.ir.ValueNumbering /** - * Gets the C++ type of `this` in the member function `f`. + * Gets the C++ type of `this` in an `IRFunction` generated from `f`. * The result is a glvalue if `isGLValue` is true, and * a prvalue if `isGLValue` is false. */ bindingset[isGLValue] -private CppType getThisType(Cpp::MemberFunction f, boolean isGLValue) { - result.hasType(f.getTypeOfThis(), isGLValue) +private CppType getThisType(Cpp::Declaration f, boolean isGLValue) { + result.hasType(f.(Cpp::MemberFunction).getTypeOfThis(), isGLValue) + or + exists(Cpp::PointerType pt | + pt.getBaseType() = f.(Cpp::Field).getDeclaringType() and + result.hasType(pt, isGLValue) + ) } /** @@ -175,7 +180,8 @@ private class PointerWrapperTypeIndirection extends Indirection instanceof Point override predicate isAdditionalDereference(Instruction deref, Operand address) { exists(CallInstruction call | operandForFullyConvertedCall(getAUse(deref), call) and - this = call.getStaticCallTarget().getClassAndName(["operator*", "operator->", "get"]) and + this = + call.getStaticCallTarget().(Function).getClassAndName(["operator*", "operator->", "get"]) and address = call.getThisArgumentOperand() ) } @@ -194,7 +200,7 @@ private module IteratorIndirections { override predicate isAdditionalWrite(Node0Impl value, Operand address, boolean certain) { exists(CallInstruction call | call.getArgumentOperand(0) = value.asOperand() | - this = call.getStaticCallTarget().getClassAndName("operator=") and + this = call.getStaticCallTarget().(Function).getClassAndName("operator=") and address = call.getThisArgumentOperand() and certain = false ) 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 8d3e960c3f87..b7dcd4d8f754 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 @@ -495,7 +495,7 @@ class FieldInstruction extends Instruction { * `FunctionAddress` instruction. */ class FunctionInstruction extends Instruction { - Language::Function funcSymbol; + Language::Declaration funcSymbol; FunctionInstruction() { funcSymbol = Raw::getInstructionFunction(this) } @@ -504,7 +504,7 @@ class FunctionInstruction extends Instruction { /** * Gets the function that this instruction references. */ - final Language::Function getFunctionSymbol() { result = funcSymbol } + final Language::Declaration getFunctionSymbol() { result = funcSymbol } } /** @@ -1678,7 +1678,7 @@ class CallInstruction extends Instruction { /** * Gets the `Function` that the call targets, if this is statically known. */ - final Language::Function getStaticCallTarget() { + final Language::Declaration getStaticCallTarget() { result = this.getCallTarget().(FunctionAddressInstruction).getFunctionSymbol() } 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 8d3e960c3f87..b7dcd4d8f754 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 @@ -495,7 +495,7 @@ class FieldInstruction extends Instruction { * `FunctionAddress` instruction. */ class FunctionInstruction extends Instruction { - Language::Function funcSymbol; + Language::Declaration funcSymbol; FunctionInstruction() { funcSymbol = Raw::getInstructionFunction(this) } @@ -504,7 +504,7 @@ class FunctionInstruction extends Instruction { /** * Gets the function that this instruction references. */ - final Language::Function getFunctionSymbol() { result = funcSymbol } + final Language::Declaration getFunctionSymbol() { result = funcSymbol } } /** @@ -1678,7 +1678,7 @@ class CallInstruction extends Instruction { /** * Gets the `Function` that the call targets, if this is statically known. */ - final Language::Function getStaticCallTarget() { + final Language::Declaration getStaticCallTarget() { result = this.getCallTarget().(FunctionAddressInstruction).getFunctionSymbol() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll index 9e9a47a5b4f1..da8c394c845c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll @@ -15,6 +15,7 @@ private import TranslatedCall private import TranslatedStmt private import TranslatedFunction private import TranslatedGlobalVar +private import TranslatedNonStaticDataMember private import TranslatedInitialization TranslatedElement getInstructionTranslatedElement(Instruction instruction) { @@ -45,6 +46,9 @@ module Raw { or not var.isFromUninstantiatedTemplate(_) and var instanceof StaticInitializedStaticLocalVariable + or + not var.isFromUninstantiatedTemplate(_) and + var instanceof Field ) and var.hasInitializer() and ( @@ -64,6 +68,8 @@ module Raw { getTranslatedFunction(decl).hasUserVariable(var, type) or getTranslatedVarInit(decl).hasUserVariable(var, type) + or + getTranslatedFieldInit(decl).hasUserVariable(var, type) } cached @@ -110,7 +116,7 @@ module Raw { } cached - Function getInstructionFunction(Instruction instruction) { + Declaration getInstructionFunction(Instruction instruction) { result = getInstructionTranslatedElement(instruction) .getInstructionFunction(getInstructionTag(instruction)) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll index 008637812573..c6214bf5e4f7 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/SideEffects.qll @@ -130,27 +130,31 @@ private predicate hasDefaultSideEffect(Call call, ParameterIndex i, boolean buff } /** - * A `Call` or `NewOrNewArrayExpr` or `DeleteOrDeleteArrayExpr`. + * An expression that can have call side effects. * - * All kinds of expression invoke a function as part of their evaluation. This class provides a - * way to treat both kinds of function similarly, and to get the invoked `Function`. + * All kinds of expressions invoke a function as part of their evaluation. This class provides a + * way to treat those expressions similarly, and to get the invoked `Declaration`. */ -class CallOrAllocationExpr extends Expr { - CallOrAllocationExpr() { +class ExprWithCallSideEffects extends Expr { + ExprWithCallSideEffects() { this instanceof Call or this instanceof NewOrNewArrayExpr or this instanceof DeleteOrDeleteArrayExpr + or + this instanceof ConstructorDefaultFieldInit } - /** Gets the `Function` invoked by this expression, if known. */ - final Function getTarget() { + /** Gets the `Declaration` invoked by this expression, if known. */ + final Declaration getTarget() { result = this.(Call).getTarget() or result = this.(NewOrNewArrayExpr).getAllocator() or result = this.(DeleteOrDeleteArrayExpr).getDeallocator() + or + result = this.(ConstructorDefaultFieldInit).getTarget() } } @@ -158,7 +162,7 @@ class CallOrAllocationExpr extends Expr { * Returns the side effect opcode, if any, that represents any side effects not specifically modeled * by an argument side effect. */ -Opcode getCallSideEffectOpcode(CallOrAllocationExpr expr) { +Opcode getCallSideEffectOpcode(ExprWithCallSideEffects expr) { not exists(expr.getTarget().(SideEffectFunction)) and result instanceof Opcode::CallSideEffect or exists(SideEffectFunction sideEffectFunction | @@ -175,7 +179,7 @@ Opcode getCallSideEffectOpcode(CallOrAllocationExpr expr) { /** * Returns a side effect opcode for parameter index `i` of the specified call. * - * This predicate will return at most two results: one read side effect, and one write side effect. + * This predicate will yield at most two results: one read side effect, and one write side effect. */ Opcode getASideEffectOpcode(Call call, ParameterIndex i) { exists(boolean buffer | @@ -228,3 +232,14 @@ Opcode getASideEffectOpcode(Call call, ParameterIndex i) { ) ) } + +/** + * Returns a side effect opcode for a default field initialization. + * + * This predicate will yield two results: one read side effect, and one write side effect. + */ +Opcode getDefaultFieldInitSideEffectOpcode() { + result instanceof Opcode::IndirectReadSideEffect + or + result instanceof Opcode::IndirectMayWriteSideEffect +} diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 1a5c65d364de..bd012d4b9b4a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -10,6 +10,7 @@ private import SideEffects private import TranslatedElement private import TranslatedExpr private import TranslatedFunction +private import TranslatedInitialization private import DefaultOptions as DefaultOptions /** @@ -348,7 +349,7 @@ class TranslatedExprCall extends TranslatedCallExpr { class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { override FunctionCall expr; - override Function getInstructionFunction(InstructionTag tag) { + override Declaration getInstructionFunction(InstructionTag tag) { tag = CallTargetTag() and result = expr.getTarget() } @@ -429,6 +430,9 @@ class TranslatedCallSideEffects extends TranslatedSideEffects, TTranslatedCallSi or expr instanceof DeleteOrDeleteArrayExpr and result = getTranslatedDeleteOrDeleteArray(expr).getInstruction(CallTag()) + or + expr instanceof ConstructorDefaultFieldInit and + result = getTranslatedConstructorFieldInitialization(expr).getInstruction(CallTag()) } } @@ -504,11 +508,25 @@ abstract class TranslatedSideEffect extends TranslatedElement { abstract predicate sideEffectInstruction(Opcode opcode, CppType type); } +private class CallOrDefaultFieldInit extends Expr { + CallOrDefaultFieldInit() { + this instanceof Call + or + this instanceof ConstructorDefaultFieldInit + } + + Declaration getTarget() { + result = this.(Call).getTarget() + or + result = this.(ConstructorDefaultFieldInit).getTarget() + } +} + /** * The IR translation of a single argument side effect for a call. */ abstract class TranslatedArgumentSideEffect extends TranslatedSideEffect { - Call call; + CallOrDefaultFieldInit callOrInit; int index; SideEffectOpcode sideEffectOpcode; @@ -524,7 +542,7 @@ abstract class TranslatedArgumentSideEffect extends TranslatedSideEffect { result = "(read side effect for " + this.getArgString() + ")" } - override Call getPrimaryExpr() { result = call } + override Expr getPrimaryExpr() { result = callOrInit } override predicate sortOrder(int group, int indexInGroup) { indexInGroup = index and @@ -586,9 +604,10 @@ abstract class TranslatedArgumentSideEffect extends TranslatedSideEffect { tag instanceof OnlyInstructionTag and operandTag instanceof BufferSizeOperandTag and result = - getTranslatedExpr(call.getArgument(call.getTarget() - .(SideEffectFunction) - .getParameterSizeIndex(index)).getFullyConverted()).getResult() + getTranslatedExpr(callOrInit + .(Call) + .getArgument(callOrInit.getTarget().(SideEffectFunction).getParameterSizeIndex(index)) + .getFullyConverted()).getResult() } /** Holds if this side effect is a write side effect, rather than a read side effect. */ @@ -616,7 +635,7 @@ class TranslatedArgumentExprSideEffect extends TranslatedArgumentSideEffect, Expr arg; TranslatedArgumentExprSideEffect() { - this = TTranslatedArgumentExprSideEffect(call, arg, index, sideEffectOpcode) + this = TTranslatedArgumentExprSideEffect(callOrInit, arg, index, sideEffectOpcode) } final override Locatable getAst() { result = arg } @@ -640,28 +659,31 @@ class TranslatedArgumentExprSideEffect extends TranslatedArgumentSideEffect, * The IR translation of an argument side effect for `*this` on a call, where there is no `Expr` * object that represents the `this` argument. * - * The applies only to constructor calls, as the AST has exploit qualifier `Expr`s for all other - * calls to non-static member functions. + * This applies to constructor calls and default field initializations, as the AST has explicit + * qualifier `Expr`s for all other calls to non-static member functions. */ -class TranslatedStructorQualifierSideEffect extends TranslatedArgumentSideEffect, - TTranslatedStructorQualifierSideEffect +class TranslatedImplicitThisQualifierSideEffect extends TranslatedArgumentSideEffect, + TTranslatedImplicitThisQualifierSideEffect { - TranslatedStructorQualifierSideEffect() { - this = TTranslatedStructorQualifierSideEffect(call, sideEffectOpcode) and + TranslatedImplicitThisQualifierSideEffect() { + this = TTranslatedImplicitThisQualifierSideEffect(callOrInit, sideEffectOpcode) and index = -1 } - final override Locatable getAst() { result = call } + final override Locatable getAst() { result = callOrInit } - final override Type getIndirectionType() { result = call.getTarget().getDeclaringType() } + final override Type getIndirectionType() { result = callOrInit.getTarget().getDeclaringType() } final override string getArgString() { result = "this" } final override Instruction getArgInstruction() { exists(TranslatedStructorCall structorCall | - structorCall.getExpr() = call and + structorCall.getExpr() = callOrInit and result = structorCall.getQualifierResult() ) + or + callOrInit instanceof ConstructorDefaultFieldInit and + result = getTranslatedFunction(callOrInit.getEnclosingFunction()).getLoadThisInstruction() } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll index ff8867db696b..be8bff5b05cc 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll @@ -36,7 +36,8 @@ abstract class TranslatedCondition extends TranslatedElement { final override Declaration getFunction() { result = getEnclosingFunction(expr) or result = getEnclosingVariable(expr).(GlobalOrNamespaceVariable) or - result = getEnclosingVariable(expr).(StaticInitializedStaticLocalVariable) + result = getEnclosingVariable(expr).(StaticInitializedStaticLocalVariable) or + result = getEnclosingVariable(expr).(Field) } final Type getResultType() { result = expr.getUnspecifiedType() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll index c0fe9cd2207d..6de5c1ba21fd 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedDeclarationEntry.qll @@ -34,8 +34,11 @@ abstract class TranslatedDeclarationEntry extends TranslatedElement, TTranslated or result = entry.getDeclaration().(GlobalOrNamespaceVariable) or + result = entry.getDeclaration().(Field) + or not entry.getDeclaration() instanceof StaticInitializedStaticLocalVariable and not entry.getDeclaration() instanceof GlobalOrNamespaceVariable and + not entry.getDeclaration() instanceof Field and result = stmt.getEnclosingFunction() ) } 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 9829388ef177..58456476f6a2 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 @@ -767,7 +767,7 @@ newtype TTranslatedElement = expr = initList.getFieldExpr(field, position).getFullyConverted() ) or - exists(ConstructorFieldInit init | + exists(ConstructorDirectFieldInit init | not ignoreExpr(init) and ast = init and field = init.getTarget() and @@ -775,6 +775,14 @@ newtype TTranslatedElement = position = -1 ) } or + // The initialization of a field via a default member initializer. + TTranslatedDefaultFieldInitialization(Expr ast, Field field) { + exists(ConstructorDefaultFieldInit init | + not ignoreExpr(init) and + ast = init and + field = init.getTarget() + ) + } or // The value initialization of a field due to an omitted member of an // initializer list. TTranslatedFieldValueInitialization(Expr ast, Field field) { @@ -871,7 +879,7 @@ newtype TTranslatedElement = // The declaration/initialization part of a `ConditionDeclExpr` TTranslatedConditionDecl(ConditionDeclExpr expr) { not ignoreExpr(expr) } or // The side effects of a `Call` - TTranslatedCallSideEffects(CallOrAllocationExpr expr) { + TTranslatedCallSideEffects(ExprWithCallSideEffects expr) { not ignoreExpr(expr) and not ignoreSideEffects(expr) } or @@ -910,15 +918,23 @@ newtype TTranslatedElement = } or // Constructor calls lack a qualifier (`this`) expression, so we need to handle the side effects // on `*this` without an `Expr`. - TTranslatedStructorQualifierSideEffect(Call call, SideEffectOpcode opcode) { + TTranslatedImplicitThisQualifierSideEffect(ExprWithCallSideEffects call, SideEffectOpcode opcode) { not ignoreExpr(call) and not ignoreSideEffects(call) and - call instanceof ConstructorCall and - opcode = getASideEffectOpcode(call, -1) + ( + call instanceof ConstructorCall and + opcode = getASideEffectOpcode(call, -1) + or + call instanceof ConstructorFieldInit and + opcode = getDefaultFieldInitSideEffectOpcode() + ) } or // The side effect that initializes newly-allocated memory. TTranslatedAllocationSideEffect(AllocationExpr expr) { not ignoreSideEffects(expr) } or - TTranslatedStaticStorageDurationVarInit(Variable var) { Raw::varHasIRFunc(var) } or + TTranslatedStaticStorageDurationVarInit(Variable var) { + Raw::varHasIRFunc(var) and not var instanceof Field + } or + TTranslatedNonStaticDataMemberVarInit(Field var) { Raw::varHasIRFunc(var) } or TTranslatedAssertionOperand(MacroInvocation mi, int index) { hasAssertionOperand(mi, index) } /** @@ -1179,7 +1195,7 @@ abstract class TranslatedElement extends TTranslatedElement { * If the instruction specified by `tag` is a `FunctionInstruction`, gets the * `Function` for that instruction. */ - Function getInstructionFunction(InstructionTag tag) { none() } + Declaration getInstructionFunction(InstructionTag tag) { none() } /** * If the instruction specified by `tag` is a `VariableInstruction`, gets the @@ -1297,5 +1313,7 @@ abstract class TranslatedRootElement extends TranslatedElement { this instanceof TTranslatedFunction or this instanceof TTranslatedStaticStorageDurationVarInit + or + this instanceof TTranslatedNonStaticDataMemberVarInit } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 2f7ffa636da3..9a437b905381 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -14,6 +14,7 @@ private import TranslatedFunction private import TranslatedInitialization private import TranslatedStmt private import TranslatedGlobalVar +private import TranslatedNonStaticDataMember private import IRConstruction import TranslatedCall @@ -138,6 +139,8 @@ abstract class TranslatedExpr extends TranslatedElement { result = getTranslatedFunction(getEnclosingFunction(expr)) or result = getTranslatedVarInit(getEnclosingVariable(expr)) + or + result = getTranslatedFieldInit(getEnclosingVariable(expr)) } } @@ -153,7 +156,10 @@ Declaration getEnclosingDeclaration0(Expr e) { i.getExpr().getFullyConverted() = e and v = i.getDeclaration() | - if v instanceof StaticInitializedStaticLocalVariable or v instanceof GlobalOrNamespaceVariable + if + v instanceof StaticInitializedStaticLocalVariable or + v instanceof GlobalOrNamespaceVariable or + v instanceof Field then result = v else result = e.getEnclosingDeclaration() ) @@ -173,7 +179,10 @@ Variable getEnclosingVariable0(Expr e) { i.getExpr().getFullyConverted() = e and v = i.getDeclaration() | - if v instanceof StaticInitializedStaticLocalVariable or v instanceof GlobalOrNamespaceVariable + if + v instanceof StaticInitializedStaticLocalVariable or + v instanceof GlobalOrNamespaceVariable or + v instanceof Field then result = v else result = e.getEnclosingVariable() ) @@ -826,6 +835,46 @@ class TranslatedPostfixCrementOperation extends TranslatedCrementOperation { override Instruction getResult() { result = this.getLoadedOperand().getResult() } } +class TranslatedParamAccessForType extends TranslatedNonConstantExpr { + override ParamAccessForType expr; + + TranslatedParamAccessForType() { + // Currently only needed for this parameter accesses. + expr.isThisAccess() + } + + final override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getInstruction(OnlyInstructionTag()) and + kind instanceof GotoEdge + } + + override Instruction getALastInstructionInternal() { + result = this.getInstruction(OnlyInstructionTag()) + } + + final override TranslatedElement getChildInternal(int id) { none() } + + override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { + tag = OnlyInstructionTag() and + result = this.getParent().getChildSuccessor(this, kind) + } + + override Instruction getResult() { result = this.getInstruction(OnlyInstructionTag()) } + + override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { + tag = OnlyInstructionTag() and + opcode instanceof Opcode::CopyValue and + resultType = getTypeForPRValue(expr.getType()) + } + + override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { + tag = OnlyInstructionTag() and + operandTag instanceof UnaryOperandTag and + result = + this.getEnclosingFunction().(TranslatedNonStaticDataMemberVarInit).getLoadThisInstruction() + } +} + /** * IR translation of an array access expression (e.g. `a[i]`). The array being accessed will either * be a prvalue of pointer type (possibly due to an implicit array-to-pointer conversion), or a @@ -1215,7 +1264,7 @@ class TranslatedFunctionAccess extends TranslatedNonConstantExpr { resultType = this.getResultType() } - override Function getInstructionFunction(InstructionTag tag) { + override Declaration getInstructionFunction(InstructionTag tag) { tag = OnlyInstructionTag() and result = expr.getTarget() } @@ -2498,7 +2547,7 @@ class TranslatedAllocatorCall extends TTranslatedAllocatorCall, TranslatedDirect any() } - override Function getInstructionFunction(InstructionTag tag) { + override Declaration getInstructionFunction(InstructionTag tag) { tag = CallTargetTag() and result = expr.getAllocator() } @@ -2581,7 +2630,7 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans result = this.getFirstArgumentOrCallInstruction(kind) } - override Function getInstructionFunction(InstructionTag tag) { + override Declaration getInstructionFunction(InstructionTag tag) { tag = CallTargetTag() and result = expr.getDeallocator() } 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 b280dd7bc700..10c033131225 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 @@ -148,7 +148,8 @@ abstract class TranslatedInitialization extends TranslatedElement, TTranslatedIn final override Declaration getFunction() { result = getEnclosingFunction(expr) or result = getEnclosingVariable(expr).(GlobalOrNamespaceVariable) or - result = getEnclosingVariable(expr).(StaticInitializedStaticLocalVariable) + result = getEnclosingVariable(expr).(StaticInitializedStaticLocalVariable) or + result = getEnclosingVariable(expr).(Field) } final override Locatable getAst() { result = expr } @@ -514,8 +515,8 @@ TranslatedFieldInitialization getTranslatedConstructorFieldInitialization(Constr } /** - * Represents the IR translation of the initialization of a field from an - * element of an initializer list. + * The IR translation of the initialization of a field from an element of + * an initializer list. */ abstract class TranslatedFieldInitialization extends TranslatedElement { Expr ast; @@ -528,13 +529,11 @@ abstract class TranslatedFieldInitialization extends TranslatedElement { final override Declaration getFunction() { result = getEnclosingFunction(ast) or result = getEnclosingVariable(ast).(GlobalOrNamespaceVariable) or - result = getEnclosingVariable(ast).(StaticInitializedStaticLocalVariable) + result = getEnclosingVariable(ast).(StaticInitializedStaticLocalVariable) or + result = getEnclosingVariable(ast).(Field) } - final override Instruction getFirstInstruction(EdgeKind kind) { - result = this.getInstruction(this.getFieldAddressTag()) and - kind instanceof GotoEdge - } + final Field getField() { result = field } /** * Gets the zero-based index describing the order in which this field is to be @@ -542,6 +541,20 @@ abstract class TranslatedFieldInitialization extends TranslatedElement { */ final int getOrder() { result = field.getInitializationOrder() } + /** Gets the position in the initializer list, or `-1` if the initialization is implicit. */ + int getPosition() { result = -1 } +} + +/** + * The IR translation of the initialization of a field from an element of an initializer + * list where default initialization is not used. + */ +abstract class TranslatedNonDefaultFieldInitialization extends TranslatedFieldInitialization { + final override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getInstruction(this.getFieldAddressTag()) and + kind instanceof GotoEdge + } + override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { tag = this.getFieldAddressTag() and opcode instanceof Opcode::FieldAddress and @@ -559,18 +572,13 @@ abstract class TranslatedFieldInitialization extends TranslatedElement { } final InstructionTag getFieldAddressTag() { result = InitializerFieldAddressTag() } - - final Field getField() { result = field } - - /** Gets the position in the initializer list, or `-1` if the initialization is implicit. */ - int getPosition() { result = -1 } } /** - * Represents the IR translation of the initialization of a field from an - * explicit element in an initializer list. + * The IR translation of the initialization of a field from an explicit element in + * an initializer list. */ -class TranslatedExplicitFieldInitialization extends TranslatedFieldInitialization, +class TranslatedExplicitFieldInitialization extends TranslatedNonDefaultFieldInitialization, InitializationContext, TTranslatedExplicitFieldInitialization { Expr expr; @@ -610,15 +618,81 @@ class TranslatedExplicitFieldInitialization extends TranslatedFieldInitializatio override int getPosition() { result = position } } +/** + * The IR translation of the initialization of a field from an element of an initializer + * list where default initialization is used. + */ +class TranslatedDefaultFieldInitialization extends TranslatedFieldInitialization, + TTranslatedDefaultFieldInitialization +{ + TranslatedDefaultFieldInitialization() { + this = TTranslatedDefaultFieldInitialization(ast, field) + } + + final override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getInstruction(CallTargetTag()) and + kind instanceof GotoEdge + } + + override Instruction getALastInstructionInternal() { + result = this.getSideEffects().getALastInstruction() + } + + override TranslatedElement getLastChild() { result = this.getSideEffects() } + + override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { + tag = CallTargetTag() and + result = this.getInstruction(CallTag()) + or + tag = CallTag() and + result = this.getSideEffects().getFirstInstruction(kind) + } + + override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { + child = this.getSideEffects() and + result = this.getParent().getChildSuccessor(this, kind) + } + + override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { + tag = CallTargetTag() and + opcode instanceof Opcode::FunctionAddress and + resultType = getFunctionGLValueType() + or + tag = CallTag() and + opcode instanceof Opcode::Call and + resultType = getVoidType() + } + + override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { + tag = CallTag() and + ( + operandTag instanceof CallTargetOperandTag and + result = this.getInstruction(CallTargetTag()) + or + operandTag instanceof ThisArgumentOperandTag and + result = getTranslatedFunction(this.getFunction()).getLoadThisInstruction() + ) + } + + override Declaration getInstructionFunction(InstructionTag tag) { + tag = CallTargetTag() and + result = field + } + + override TranslatedElement getChild(int id) { id = 0 and result = this.getSideEffects() } + + final TranslatedSideEffects getSideEffects() { result.getExpr() = ast } +} + private string getZeroValue(Type type) { if type instanceof FloatingPointType then result = "0.0" else result = "0" } /** - * Represents the IR translation of the initialization of a field without a - * corresponding element in the initializer list. + * The IR translation of the initialization of a field without a corresponding + * element in the initializer list. */ -class TranslatedFieldValueInitialization extends TranslatedFieldInitialization, +class TranslatedFieldValueInitialization extends TranslatedNonDefaultFieldInitialization, TTranslatedFieldValueInitialization { TranslatedFieldValueInitialization() { this = TTranslatedFieldValueInitialization(ast, field) } @@ -628,7 +702,7 @@ class TranslatedFieldValueInitialization extends TranslatedFieldInitialization, } override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { - TranslatedFieldInitialization.super.hasInstruction(opcode, tag, resultType) + TranslatedNonDefaultFieldInitialization.super.hasInstruction(opcode, tag, resultType) or tag = this.getFieldDefaultValueTag() and opcode instanceof Opcode::Constant and @@ -659,7 +733,8 @@ class TranslatedFieldValueInitialization extends TranslatedFieldInitialization, } override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { - result = TranslatedFieldInitialization.super.getInstructionRegisterOperand(tag, operandTag) + result = + TranslatedNonDefaultFieldInitialization.super.getInstructionRegisterOperand(tag, operandTag) or tag = this.getFieldDefaultValueStoreTag() and ( @@ -683,8 +758,8 @@ class TranslatedFieldValueInitialization extends TranslatedFieldInitialization, } /** - * Represents the IR translation of the initialization of an array element from - * an element of an initializer list. + * The IR translation of the initialization of an array element from an element + * of an initializer list. */ abstract class TranslatedElementInitialization extends TranslatedElement { ArrayOrVectorAggregateLiteral initList; @@ -701,6 +776,8 @@ abstract class TranslatedElementInitialization extends TranslatedElement { result = getEnclosingVariable(initList).(GlobalOrNamespaceVariable) or result = getEnclosingVariable(initList).(StaticInitializedStaticLocalVariable) + or + result = getEnclosingVariable(initList).(Field) } final override Instruction getFirstInstruction(EdgeKind kind) { @@ -759,8 +836,8 @@ abstract class TranslatedElementInitialization extends TranslatedElement { } /** - * Represents the IR translation of the initialization of an array element from - * an explicit element in an initializer list. + * The IR translation of the initialization of an array element from an explicit + * element in an initializer list. */ class TranslatedExplicitElementInitialization extends TranslatedElementInitialization, TTranslatedExplicitElementInitialization, InitializationContext @@ -808,8 +885,8 @@ class TranslatedExplicitElementInitialization extends TranslatedElementInitializ } /** - * Represents the IR translation of the initialization of a range of array - * elements without corresponding elements in the initializer list. + * The IR translation of the initialization of a range of array elements without + * corresponding elements in the initializer list. */ class TranslatedElementValueInitialization extends TranslatedElementInitialization, TTranslatedElementValueInitialization diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedNonStaticDataMember.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedNonStaticDataMember.qll new file mode 100644 index 000000000000..ff06ff3198ed --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedNonStaticDataMember.qll @@ -0,0 +1,217 @@ +import semmle.code.cpp.ir.implementation.raw.internal.TranslatedElement +private import TranslatedExpr +private import cpp +private import semmle.code.cpp.ir.implementation.internal.OperandTag +private import semmle.code.cpp.ir.internal.TempVariableTag +private import semmle.code.cpp.ir.internal.CppType +private import TranslatedInitialization +private import InstructionTag +private import semmle.code.cpp.ir.internal.IRUtilities + +class TranslatedNonStaticDataMemberVarInit extends TranslatedRootElement, + TTranslatedNonStaticDataMemberVarInit, InitializationContext +{ + Field field; + Class cls; + + TranslatedNonStaticDataMemberVarInit() { + this = TTranslatedNonStaticDataMemberVarInit(field) and + cls.getAMember() = field + } + + override string toString() { result = cls.toString() + "::" + field.toString() } + + final override Field getAst() { result = field } + + final override Declaration getFunction() { result = field } + + override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getInstruction(EnterFunctionTag()) and + kind instanceof GotoEdge + } + + override Instruction getALastInstructionInternal() { + result = this.getInstruction(ExitFunctionTag()) + } + + override TranslatedElement getChild(int n) { + n = 1 and + result = getTranslatedInitialization(field.getInitializer().getExpr().getFullyConverted()) + } + + override predicate hasInstruction(Opcode op, InstructionTag tag, CppType type) { + op instanceof Opcode::EnterFunction and + tag = EnterFunctionTag() and + type = getVoidType() + or + op instanceof Opcode::AliasedDefinition and + tag = AliasedDefinitionTag() and + type = getUnknownType() + or + op instanceof Opcode::InitializeNonLocal and + tag = InitializeNonLocalTag() and + type = getUnknownType() + or + tag = ThisAddressTag() and + op instanceof Opcode::VariableAddress and + type = getTypeForGLValue(any(UnknownType t)) + or + tag = InitializerStoreTag() and + op instanceof Opcode::InitializeParameter and + type = this.getThisType() + or + tag = ThisLoadTag() and + op instanceof Opcode::Load and + type = this.getThisType() + or + tag = InitializerIndirectStoreTag() and + op instanceof Opcode::InitializeIndirection and + type = getTypeForPRValue(cls) + or + op instanceof Opcode::FieldAddress and + tag = InitializerFieldAddressTag() and + type = getTypeForGLValue(field.getType()) + or + op instanceof Opcode::ReturnVoid and + tag = ReturnTag() and + type = getVoidType() + or + op instanceof Opcode::AliasedUse and + tag = AliasedUseTag() and + type = getVoidType() + or + op instanceof Opcode::ExitFunction and + tag = ExitFunctionTag() and + type = getVoidType() + } + + override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { + kind instanceof GotoEdge and + ( + tag = EnterFunctionTag() and + result = this.getInstruction(AliasedDefinitionTag()) + or + tag = AliasedDefinitionTag() and + result = this.getInstruction(InitializeNonLocalTag()) + or + tag = InitializeNonLocalTag() and + result = this.getInstruction(ThisAddressTag()) + or + tag = ThisAddressTag() and + result = this.getInstruction(InitializerStoreTag()) + or + tag = InitializerStoreTag() and + result = this.getInstruction(ThisLoadTag()) + or + tag = ThisLoadTag() and + result = this.getInstruction(InitializerIndirectStoreTag()) + or + tag = InitializerIndirectStoreTag() and + result = this.getInstruction(InitializerFieldAddressTag()) + ) + or + tag = InitializerFieldAddressTag() and + result = this.getChild(1).getFirstInstruction(kind) + or + kind instanceof GotoEdge and + ( + tag = ReturnTag() and + result = this.getInstruction(AliasedUseTag()) + or + tag = AliasedUseTag() and + result = this.getInstruction(ExitFunctionTag()) + ) + } + + override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { + child = this.getChild(1) and + result = this.getInstruction(ReturnTag()) and + kind instanceof GotoEdge + } + + final override CppType getInstructionMemoryOperandType( + InstructionTag tag, TypedOperandTag operandTag + ) { + tag = AliasedUseTag() and + operandTag instanceof SideEffectOperandTag and + result = getUnknownType() + } + + override IRVariable getInstructionVariable(InstructionTag tag) { + ( + tag = ThisAddressTag() or + tag = InitializerStoreTag() or + tag = InitializerIndirectStoreTag() + ) and + result = getIRTempVariable(field, ThisTempVar()) + } + + override Field getInstructionField(InstructionTag tag) { + tag = InitializerFieldAddressTag() and + result = field + } + + override predicate hasTempVariable(TempVariableTag tag, CppType type) { + tag = ThisTempVar() and + type = this.getThisType() + } + + /** + * Holds if this variable defines or accesses variable `var` with type `type`. This includes all + * parameters and local variables, plus any global variables or static data members that are + * directly accessed by the function. + */ + final predicate hasUserVariable(Variable varUsed, CppType type) { + ( + ( + varUsed instanceof GlobalOrNamespaceVariable + or + varUsed instanceof StaticLocalVariable + or + varUsed instanceof MemberVariable and not varUsed instanceof Field + ) and + exists(VariableAccess access | + access.getTarget() = varUsed and + getEnclosingVariable(access) = field + ) + or + field = varUsed + or + varUsed.(LocalScopeVariable).getEnclosingElement*() = field + or + varUsed.(Parameter).getCatchBlock().getEnclosingElement*() = field + ) and + type = getTypeForPRValue(getVariableType(varUsed)) + } + + override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { + ( + tag = InitializerStoreTag() + or + tag = ThisLoadTag() + ) and + operandTag instanceof AddressOperandTag and + result = this.getInstruction(ThisAddressTag()) + or + ( + tag = InitializerIndirectStoreTag() and + operandTag instanceof AddressOperandTag + or + tag = InitializerFieldAddressTag() and + operandTag instanceof UnaryOperandTag + ) and + result = this.getInstruction(ThisLoadTag()) + } + + override Instruction getTargetAddress() { + result = this.getInstruction(InitializerFieldAddressTag()) + } + + override Type getTargetType() { result = field.getUnspecifiedType() } + + final Instruction getLoadThisInstruction() { result = this.getInstruction(ThisLoadTag()) } + + private CppType getThisType() { result = getTypeForGLValue(cls) } +} + +TranslatedNonStaticDataMemberVarInit getTranslatedFieldInit(Field field) { result.getAst() = field } 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 8d3e960c3f87..b7dcd4d8f754 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 @@ -495,7 +495,7 @@ class FieldInstruction extends Instruction { * `FunctionAddress` instruction. */ class FunctionInstruction extends Instruction { - Language::Function funcSymbol; + Language::Declaration funcSymbol; FunctionInstruction() { funcSymbol = Raw::getInstructionFunction(this) } @@ -504,7 +504,7 @@ class FunctionInstruction extends Instruction { /** * Gets the function that this instruction references. */ - final Language::Function getFunctionSymbol() { result = funcSymbol } + final Language::Declaration getFunctionSymbol() { result = funcSymbol } } /** @@ -1678,7 +1678,7 @@ class CallInstruction extends Instruction { /** * Gets the `Function` that the call targets, if this is statically known. */ - final Language::Function getStaticCallTarget() { + final Language::Declaration getStaticCallTarget() { result = this.getCallTarget().(FunctionAddressInstruction).getFunctionSymbol() } diff --git a/cpp/ql/lib/semmle/code/cpp/models/Models.qll b/cpp/ql/lib/semmle/code/cpp/models/Models.qll index 09f0a0df9668..54dc0fa0ff64 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/Models.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/Models.qll @@ -48,7 +48,6 @@ private import implementations.SqLite3 private import implementations.PostgreSql private import implementations.System private import implementations.StructuredExceptionHandling -private import implementations.ZMQ private import implementations.Win32CommandExecution private import implementations.CA2AEX private import implementations.CComBSTR @@ -58,3 +57,4 @@ private import implementations.CAtlFileMapping private import implementations.CAtlTemporaryFile private import implementations.CRegKey private import implementations.WinHttp +private import implementations.Http diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Gets.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Gets.qll index b5d120830352..c0e2c0c45381 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Gets.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Gets.qll @@ -112,21 +112,3 @@ private class GetsFunction extends DataFlowFunction, ArrayFunction, AliasFunctio override predicate hasArrayOutput(int bufParam) { bufParam = 0 } } - -/** - * A model for `getc` and similar functions that are flow sources. - */ -private class GetcSource extends SourceModelCsv { - override predicate row(string row) { - row = - [ - ";;false;getc;;;ReturnValue;remote", ";;false;getwc;;;ReturnValue;remote", - ";;false;_getc_nolock;;;ReturnValue;remote", ";;false;_getwc_nolock;;;ReturnValue;remote", - ";;false;getch;;;ReturnValue;local", ";;false;_getch;;;ReturnValue;local", - ";;false;_getwch;;;ReturnValue;local", ";;false;_getch_nolock;;;ReturnValue;local", - ";;false;_getwch_nolock;;;ReturnValue;local", ";;false;getchar;;;ReturnValue;local", - ";;false;getwchar;;;ReturnValue;local", ";;false;_getchar_nolock;;;ReturnValue;local", - ";;false;_getwchar_nolock;;;ReturnValue;local", - ] - } -} diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Http.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Http.qll new file mode 100644 index 000000000000..a5fdd07c31fc --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Http.qll @@ -0,0 +1,193 @@ +private import cpp +private import semmle.code.cpp.ir.dataflow.FlowSteps +private import semmle.code.cpp.dataflow.new.DataFlow + +private class HttpRequest extends Class { + HttpRequest() { this.hasGlobalName("_HTTP_REQUEST_V1") } +} + +private class HttpRequestInheritingContent extends TaintInheritingContent, DataFlow::FieldContent { + HttpRequestInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpRequest and + ( + this.getAField().hasName("pRawUrl") and + this.getIndirectionIndex() = 2 + or + this.getAField().hasName("CookedUrl") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("Headers") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("pEntityChunks") and + this.getIndirectionIndex() = 2 + or + this.getAField().hasName("pSslInfo") and + this.getIndirectionIndex() = 2 + ) + } +} + +private class HttpCookedUrl extends Class { + HttpCookedUrl() { this.hasGlobalName("_HTTP_COOKED_URL") } +} + +private class HttpCookedUrlInheritingContent extends TaintInheritingContent, DataFlow::FieldContent { + HttpCookedUrlInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpCookedUrl and + this.getAField().hasName(["pFullUrl", "pHost", "pAbsPath", "pQueryString"]) and + this.getIndirectionIndex() = 2 + } +} + +private class HttpRequestHeaders extends Class { + HttpRequestHeaders() { this.hasGlobalName("_HTTP_REQUEST_HEADERS") } +} + +private class HttpRequestHeadersInheritingContent extends TaintInheritingContent, + DataFlow::FieldContent +{ + HttpRequestHeadersInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpRequestHeaders and + ( + this.getAField().hasName("KnownHeaders") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("pUnknownHeaders") and + this.getIndirectionIndex() = 2 + ) + } +} + +private class HttpKnownHeader extends Class { + HttpKnownHeader() { this.hasGlobalName("_HTTP_KNOWN_HEADER") } +} + +private class HttpKnownHeaderInheritingContent extends TaintInheritingContent, + DataFlow::FieldContent +{ + HttpKnownHeaderInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpKnownHeader and + this.getAField().hasName("pRawValue") and + this.getIndirectionIndex() = 2 + } +} + +private class HttpUnknownHeader extends Class { + HttpUnknownHeader() { this.hasGlobalName("_HTTP_UNKNOWN_HEADER") } +} + +private class HttpUnknownHeaderInheritingContent extends TaintInheritingContent, + DataFlow::FieldContent +{ + HttpUnknownHeaderInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpUnknownHeader and + this.getAField().hasName(["pName", "pRawValue"]) and + this.getIndirectionIndex() = 2 + } +} + +private class HttpDataChunk extends Class { + HttpDataChunk() { this.hasGlobalName("_HTTP_DATA_CHUNK") } +} + +private class HttpDataChunkInheritingContent extends TaintInheritingContent, DataFlow::FieldContent { + HttpDataChunkInheritingContent() { + this.getAField().getDeclaringType().(Union).getDeclaringType() instanceof HttpDataChunk and + ( + this.getAField().hasName("FromMemory") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("FromFileHandle") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("FromFragmentCache") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("FromFragmentCacheEx") and + this.getIndirectionIndex() = 1 + or + this.getAField().hasName("Trailers") and + this.getIndirectionIndex() = 1 + ) + } +} + +private class FromMemory extends Class { + FromMemory() { + this.getDeclaringType().(Union).getDeclaringType() instanceof HttpDataChunk and + this.getAField().hasName("pBuffer") + } +} + +private class FromMemoryInheritingContent extends TaintInheritingContent, DataFlow::FieldContent { + FromMemoryInheritingContent() { + this.getAField().getDeclaringType() instanceof FromMemory and + this.getAField().hasName("pBuffer") and + this.getIndirectionIndex() = 2 + } +} + +private class FromFileHandle extends Class { + FromFileHandle() { + this.getDeclaringType().(Union).getDeclaringType() instanceof HttpDataChunk and + this.getAField().hasName("FileHandle") + } +} + +private class FromFileHandleInheritingContent extends TaintInheritingContent, DataFlow::FieldContent +{ + FromFileHandleInheritingContent() { + this.getAField().getDeclaringType() instanceof FromFileHandle and + this.getIndirectionIndex() = 1 and + this.getAField().hasName("FileHandle") + } +} + +private class FromFragmentCacheOrCacheEx extends Class { + FromFragmentCacheOrCacheEx() { + this.getDeclaringType().(Union).getDeclaringType() instanceof HttpDataChunk and + this.getAField().hasName("pFragmentName") + } +} + +private class FromFragmentCacheInheritingContent extends TaintInheritingContent, + DataFlow::FieldContent +{ + FromFragmentCacheInheritingContent() { + this.getAField().getDeclaringType() instanceof FromFragmentCacheOrCacheEx and + this.getIndirectionIndex() = 2 and + this.getAField().hasName("pFragmentName") + } +} + +private class HttpSslInfo extends Class { + HttpSslInfo() { this.hasGlobalName("_HTTP_SSL_INFO") } +} + +private class HttpSslInfoInheritingContent extends TaintInheritingContent, DataFlow::FieldContent { + HttpSslInfoInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpSslInfo and + this.getAField().hasName(["pServerCertIssuer", "pServerCertSubject", "pClientCertInfo"]) and + this.getIndirectionIndex() = 2 + } +} + +private class HttpSslClientCertInfo extends Class { + HttpSslClientCertInfo() { this.hasGlobalName("_HTTP_SSL_CLIENT_CERT_INFO") } +} + +private class HttpSslClientCertInfoInheritingContent extends TaintInheritingContent, + DataFlow::FieldContent +{ + HttpSslClientCertInfoInheritingContent() { + this.getAField().getDeclaringType() instanceof HttpSslClientCertInfo and + ( + this.getAField().hasName("pCertEncoded") and + this.getIndirectionIndex() = 2 + or + this.getAField().hasName("Token") and + this.getIndirectionIndex() = 1 + ) + } +} diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/ZMQ.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/ZMQ.qll deleted file mode 100644 index 22f04cb9c82b..000000000000 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/ZMQ.qll +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Provides implementation classes modeling the ZeroMQ networking library. - */ - -import semmle.code.cpp.models.interfaces.FlowSource - -/** - * Remote flow sources. - */ -private class ZmqSource extends SourceModelCsv { - override predicate row(string row) { - row = - [ - ";;false;zmq_recv;;;Argument[*1];remote", ";;false;zmq_recvmsg;;;Argument[*1];remote", - ";;false;zmq_msg_recv;;;Argument[*0];remote", - ] - } -} - -/** - * Remote flow sinks. - */ -private class ZmqSinks extends SinkModelCsv { - override predicate row(string row) { - row = - [ - ";;false;zmq_send;;;Argument[*1];remote-sink", - ";;false;zmq_sendmsg;;;Argument[*1];remote-sink", - ";;false;zmq_msg_send;;;Argument[*0];remote-sink", - ] - } -} - -/** - * Flow steps. - */ -private class ZmqSummaries extends SummaryModelCsv { - override predicate row(string row) { - row = - [ - ";;false;zmq_msg_init_data;;;Argument[*1];Argument[*0];taint", - ";;false;zmq_msg_data;;;Argument[*0];ReturnValue[*];taint", - ] - } -} diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll index 85b9b66cd661..04826a487ca7 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll @@ -11,10 +11,3 @@ import semmle.code.cpp.models.Models * The function may still raise a structured exception handling (SEH) exception. */ abstract class NonCppThrowingFunction extends Function { } - -/** - * A function that is guaranteed to never throw. - * - * DEPRECATED: use `NonCppThrowingFunction` instead. - */ -deprecated class NonThrowingFunction = NonCppThrowingFunction; diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll index 111b99533957..a781bab07c35 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll @@ -10,19 +10,6 @@ import semmle.code.cpp.Function import semmle.code.cpp.models.Models import semmle.code.cpp.models.interfaces.FunctionInputsAndOutputs -/** - * A function that is known to raise an exception. - * - * DEPRECATED: use `AlwaysSehThrowingFunction` instead. - */ -abstract deprecated class ThrowingFunction extends Function { - /** - * Holds if this function may throw an exception during evaluation. - * If `unconditional` is `true` the function always throws an exception. - */ - abstract predicate mayThrowException(boolean unconditional); -} - /** * A function that unconditionally raises a structured exception handling (SEH) exception. */ diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index c29eaa31e448..a3f9d1836ade 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,25 @@ +## 1.6.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `cpp/cgi-xss` has been increased from 6.1 (medium) to 7.8 (high). + +### Minor Analysis Improvements + +* The "Extraction warnings" (`cpp/diagnostics/extraction-warnings`) diagnostics query no longer yields `ExtractionRecoverableWarning`s for `build-mode: none` databases. The results were found to significantly increase the sizes of the produced SARIF files, making them unprocessable in some cases. +* Fixed an issue with the "Suspicious add with sizeof" (`cpp/suspicious-add-sizeof`) query causing false positive results in `build-mode: none` databases. +* Fixed an issue with the "Uncontrolled format string" (`cpp/tainted-format-string`) query involving certain kinds of formatting function implementations. +* Fixed an issue with the "Wrong type of arguments to formatting function" (`cpp/wrong-type-format-argument`) query causing false positive results in `build-mode: none` databases. +* Fixed an issue with the "Multiplication result converted to larger type" (`cpp/integer-multiplication-cast-to-long`) query causing false positive results in `build-mode: none` databases. + +## 1.5.15 + +No user-facing changes. + +## 1.5.14 + +No user-facing changes. + ## 1.5.13 No user-facing changes. diff --git a/cpp/ql/src/Diagnostics/ExtractionProblems.qll b/cpp/ql/src/Diagnostics/ExtractionProblems.qll index b6dd835261d1..1199ca1c7f42 100644 --- a/cpp/ql/src/Diagnostics/ExtractionProblems.qll +++ b/cpp/ql/src/Diagnostics/ExtractionProblems.qll @@ -50,7 +50,7 @@ private newtype TExtractionProblem = /** * Superclass for the extraction problem hierarchy. */ -class ExtractionProblem extends TExtractionProblem { +abstract class ExtractionProblem extends TExtractionProblem { /** Gets the string representation of the problem. */ string toString() { none() } @@ -65,6 +65,9 @@ class ExtractionProblem extends TExtractionProblem { /** Gets the SARIF severity of this problem. */ int getSeverity() { none() } + + /** Gets the `Compilation` the problem is associated with. */ + abstract Compilation getCompilation(); } /** @@ -96,6 +99,8 @@ class ExtractionUnrecoverableError extends ExtractionProblem, TCompilationFailed // [errors](https://docs.oasis-open.org/sarif/sarif/v2.1.0/csprd01/sarif-v2.1.0-csprd01.html#_Toc10541338). result = 2 } + + override Compilation getCompilation() { result = c } } /** @@ -122,6 +127,8 @@ class ExtractionRecoverableWarning extends ExtractionProblem, TReportableWarning // [warnings](https://docs.oasis-open.org/sarif/sarif/v2.1.0/csprd01/sarif-v2.1.0-csprd01.html#_Toc10541338). result = 1 } + + override Compilation getCompilation() { result = err.getCompilation() } } /** @@ -148,4 +155,6 @@ class ExtractionUnknownProblem extends ExtractionProblem, TUnknownProblem { // [warnings](https://docs.oasis-open.org/sarif/sarif/v2.1.0/csprd01/sarif-v2.1.0-csprd01.html#_Toc10541338). result = 1 } + + override Compilation getCompilation() { result = err.getCompilation() } } diff --git a/cpp/ql/src/Diagnostics/ExtractionWarnings.ql b/cpp/ql/src/Diagnostics/ExtractionWarnings.ql index f32768734ca0..c0e9eb7d24be 100644 --- a/cpp/ql/src/Diagnostics/ExtractionWarnings.ql +++ b/cpp/ql/src/Diagnostics/ExtractionWarnings.ql @@ -10,7 +10,9 @@ import ExtractionProblems from ExtractionProblem warning where - warning instanceof ExtractionRecoverableWarning and exists(warning.getFile().getRelativePath()) + warning instanceof ExtractionRecoverableWarning and + exists(warning.getFile().getRelativePath()) and + not warning.getCompilation().buildModeNone() or warning instanceof ExtractionUnknownProblem select warning, diff --git a/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql b/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql index a54ac9020c8c..b05bd637dc2d 100644 --- a/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql +++ b/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql @@ -5,7 +5,7 @@ * @kind problem * @problem.severity warning * @security-severity 8.1 - * @precision medium + * @precision high * @id cpp/integer-multiplication-cast-to-long * @tags reliability * security @@ -218,7 +218,9 @@ where // only report if we cannot prove that the result of the // multiplication will be less (resp. greater) than the // maximum (resp. minimum) number we can compute. - overflows(me, t1) + overflows(me, t1) and + // exclude cases where the expression type may not have been extracted accurately + not me.getParent().(Call).getTarget().hasAmbiguousReturnType() select me, "Multiplication result may overflow '" + me.getType().toString() + "' before it is converted to '" + me.getFullyConverted().getType().toString() + "'." diff --git a/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql b/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql index 33fe3a0b7a15..5842b9474f74 100644 --- a/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql +++ b/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql @@ -5,7 +5,7 @@ * @kind problem * @problem.severity error * @security-severity 7.5 - * @precision medium + * @precision high * @id cpp/wrong-type-format-argument * @tags reliability * correctness @@ -168,9 +168,11 @@ where formatOtherArgType(ffc, n, expected, arg, actual) and not actual.getUnspecifiedType().(IntegralType).getSize() = sizeof_IntType() ) and + // Exclude some cases where we're less confident the result is correct / clear / valuable not arg.isAffectedByMacro() and not arg.isFromUninstantiatedTemplate(_) and not actual.stripType() instanceof ErroneousType and + not arg.getType().stripType().(RoutineType).getReturnType() instanceof ErroneousType and not arg.(Call).mayBeFromImplicitlyDeclaredFunction() and // Make sure that the format function definition is consistent count(ffc.getTarget().getFormatParameterIndex()) = 1 diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp index 6ff60d383419..90a98e1bf573 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp @@ -14,6 +14,9 @@ function may behave unpredictably.

This may indicate a misspelled function name, or that the required header containing the function declaration has not been included.

+

Note: This query is not compatible with build mode: none databases, and produces +no results on those databases.

+

Provide an explicit declaration of the function before invoking it.

@@ -26,4 +29,4 @@ the function declaration has not been included.

  • SEI CERT C Coding Standard: DCL31-C. Declare identifiers before using them
  • - \ No newline at end of file + diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql index 6a55557cf70b..00b29efbd0f2 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql @@ -5,7 +5,7 @@ * may lead to unpredictable behavior. * @kind problem * @problem.severity warning - * @precision medium + * @precision high * @id cpp/implicit-function-declaration * @tags correctness * maintainability @@ -17,6 +17,11 @@ import TooFewArguments import TooManyArguments import semmle.code.cpp.commons.Exclusions +/* + * This query is not compatible with build mode: none databases, and produces + * no results on those databases. + */ + predicate locInfo(Locatable e, File file, int line, int col) { e.getFile() = file and e.getLocation().getStartLine() = line and @@ -39,6 +44,7 @@ predicate isCompiledAsC(File f) { from FunctionDeclarationEntry fdeIm, FunctionCall fc where isCompiledAsC(fdeIm.getFile()) and + not any(Compilation c).buildModeNone() and not isFromMacroDefinition(fc) and fdeIm.isImplicit() and sameLocation(fdeIm, fc) and diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll index 2dced5d8d844..dbb457db505e 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll @@ -79,9 +79,7 @@ private predicate hasZeroParamDecl(Function f) { // True if this file (or header) was compiled as a C file private predicate isCompiledAsC(File f) { - f.compiledAsC() - or - exists(File src | isCompiledAsC(src) | src.getAnIncludedFile() = f) + exists(File src | src.compiledAsC() | src.getAnIncludedFile*() = f) } predicate mistypedFunctionArguments(FunctionCall fc, Function f, Parameter p) { diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll index 218a54b36c51..fd323513a49e 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll @@ -28,9 +28,7 @@ private predicate hasZeroParamDecl(Function f) { /* Holds if this file (or header) was compiled as a C file. */ private predicate isCompiledAsC(File f) { - f.compiledAsC() - or - exists(File src | isCompiledAsC(src) | src.getAnIncludedFile() = f) + exists(File src | src.compiledAsC() | src.getAnIncludedFile*() = f) } /** Holds if `fc` is a call to `f` with too few arguments. */ diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll index 7fba78b5550e..ab2a98ae3a55 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll @@ -19,9 +19,7 @@ private predicate hasZeroParamDecl(Function f) { // True if this file (or header) was compiled as a C file private predicate isCompiledAsC(File f) { - f.compiledAsC() - or - exists(File src | isCompiledAsC(src) | src.getAnIncludedFile() = f) + exists(File src | src.compiledAsC() | src.getAnIncludedFile*() = f) } predicate tooManyArguments(FunctionCall fc, Function f) { diff --git a/cpp/ql/src/Security/CWE/CWE-079/CgiXss.ql b/cpp/ql/src/Security/CWE/CWE-079/CgiXss.ql index 994aba733d23..0e4a8f9741cd 100644 --- a/cpp/ql/src/Security/CWE/CWE-079/CgiXss.ql +++ b/cpp/ql/src/Security/CWE/CWE-079/CgiXss.ql @@ -4,7 +4,7 @@ * allows for a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id cpp/cgi-xss * @tags security diff --git a/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql b/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql index 37e3fa0c49f8..bf6f014672fb 100644 --- a/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql +++ b/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql @@ -23,13 +23,31 @@ import Flow::PathGraph predicate isSource(FlowSource source, string sourceType) { sourceType = source.getSourceType() } +/** + * Holds if `f` is a printf-like function or a (possibly nested) wrapper + * that forwards a format-string parameter to one. + * + * Functions that *implement* printf-like behavior (e.g. a custom + * `vsnprintf` variant) internally parse the caller-supplied format string + * and build small, bounded, local format strings such as `"%d"` or `"%ld"` + * for inner `sprintf` calls. Taint that reaches those inner calls via the + * parsed format specifier is not exploitable, so sinks inside such + * functions should be excluded. + */ +private predicate isPrintfImplementation(Function f) { + f instanceof PrintfLikeFunction + or + exists(PrintfLikeFunction printf | printf.wrapperFunction(f, _, _)) +} + module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node node) { isSource(node, _) } predicate isSink(DataFlow::Node node) { exists(PrintfLikeFunction printf | printf.outermostWrapperFunctionCall([node.asExpr(), node.asIndirectExpr()], _) - ) + ) and + not isPrintfImplementation([node.asExpr(), node.asIndirectExpr()].getEnclosingFunction()) } private predicate isArithmeticNonCharType(ArithmeticType type) { diff --git a/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql b/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql index 3f330807304f..7d9ef88adea1 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql @@ -6,7 +6,7 @@ * @kind problem * @problem.severity warning * @security-severity 7.8 - * @precision medium + * @precision high * @tags reliability * security * external/cwe/cwe-190 diff --git a/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql b/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql index d9c9df4fd918..d5a5cd8f6655 100644 --- a/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql +++ b/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql @@ -6,7 +6,7 @@ * @kind problem * @problem.severity warning * @security-severity 8.8 - * @precision medium + * @precision high * @id cpp/suspicious-add-sizeof * @tags security * external/cwe/cwe-468 @@ -18,7 +18,8 @@ import IncorrectPointerScalingCommon private predicate isCharSzPtrExpr(Expr e) { exists(PointerType pt | pt = e.getFullyConverted().getUnspecifiedType() | pt.getBaseType() instanceof CharType or - pt.getBaseType() instanceof VoidType + pt.getBaseType() instanceof VoidType or + pt.getBaseType() instanceof ErroneousType // this could be char / void type in a successful compilation ) } diff --git a/cpp/ql/src/Telemetry/DatabaseQuality.qll b/cpp/ql/src/Telemetry/DatabaseQuality.qll new file mode 100644 index 000000000000..043510529860 --- /dev/null +++ b/cpp/ql/src/Telemetry/DatabaseQuality.qll @@ -0,0 +1,48 @@ +import cpp +import codeql.util.ReportStats + +/** A file that is included in the quality statistics. */ +private class RelevantFile extends File { + RelevantFile() { this.fromSource() and exists(this.getRelativePath()) } +} + +module CallTargetStats implements StatsSig { + private class RelevantCall extends Call { + RelevantCall() { this.getFile() instanceof RelevantFile } + } + + // We assume that calls with an implicit target are calls that could not be + // resolved. This is accurate in the vast majority of cases, but is inaccurate + // for calls that deliberately rely on implicitly declared functions. + private predicate hasImplicitTarget(RelevantCall call) { + call.getTarget().getADeclarationEntry().isImplicit() + } + + int getNumberOfOk() { result = count(RelevantCall call | not hasImplicitTarget(call)) } + + int getNumberOfNotOk() { result = count(RelevantCall call | hasImplicitTarget(call)) } + + string getOkText() { result = "calls with call target" } + + string getNotOkText() { result = "calls with missing call target" } +} + +private class SourceExpr extends Expr { + SourceExpr() { this.getFile() instanceof RelevantFile } +} + +private predicate hasGoodType(Expr e) { not e.getType() instanceof ErroneousType } + +module ExprTypeStats implements StatsSig { + int getNumberOfOk() { result = count(SourceExpr e | hasGoodType(e)) } + + int getNumberOfNotOk() { result = count(SourceExpr e | not hasGoodType(e)) } + + string getOkText() { result = "expressions with known type" } + + string getNotOkText() { result = "expressions with unknown type" } +} + +module CallTargetStatsReport = ReportStats; + +module ExprTypeStatsReport = ReportStats; diff --git a/cpp/ql/src/Telemetry/ExtractorInformation.ql b/cpp/ql/src/Telemetry/ExtractorInformation.ql new file mode 100644 index 000000000000..a82b3b86acee --- /dev/null +++ b/cpp/ql/src/Telemetry/ExtractorInformation.ql @@ -0,0 +1,28 @@ +/** + * @name C/C++ extraction information + * @description Information about the extraction for a C/C++ database + * @kind metric + * @tags summary telemetry + * @id cpp/telemetry/extraction-information + */ + +import cpp +import DatabaseQuality + +from string key, float value +where + ( + CallTargetStatsReport::numberOfOk(key, value) or + CallTargetStatsReport::numberOfNotOk(key, value) or + CallTargetStatsReport::percentageOfOk(key, value) or + ExprTypeStatsReport::numberOfOk(key, value) or + ExprTypeStatsReport::numberOfNotOk(key, value) or + ExprTypeStatsReport::percentageOfOk(key, value) + ) and + /* Infinity */ + value != 1.0 / 0.0 and + /* -Infinity */ + value != -1.0 / 0.0 and + /* NaN */ + value != 0.0 / 0.0 +select key, value diff --git a/cpp/ql/src/change-notes/2026-03-23-implicit-function-declaration.md b/cpp/ql/src/change-notes/2026-03-23-implicit-function-declaration.md new file mode 100644 index 000000000000..8c2c431ec24c --- /dev/null +++ b/cpp/ql/src/change-notes/2026-03-23-implicit-function-declaration.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Implicit function declaration" (`cpp/implicit-function-declaration`) query no longer produces results on `build mode: none` databases. These results were found to be very noisy and fundamentally imprecise in this mode. diff --git a/cpp/ql/src/change-notes/2026-04-02-comparison-with-wider-type.md b/cpp/ql/src/change-notes/2026-04-02-comparison-with-wider-type.md new file mode 100644 index 000000000000..c84e1dba404c --- /dev/null +++ b/cpp/ql/src/change-notes/2026-04-02-comparison-with-wider-type.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Comparison of narrow type with wide type in loop condition" (`cpp/comparison-with-wider-type`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. diff --git a/cpp/ql/src/change-notes/2026-04-02-implicit-function-declaration.md b/cpp/ql/src/change-notes/2026-04-02-implicit-function-declaration.md new file mode 100644 index 000000000000..dd0dbd4bc7d9 --- /dev/null +++ b/cpp/ql/src/change-notes/2026-04-02-implicit-function-declaration.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Implicit function declaration" (`cpp/implicit-function-declaration`) query has been upgraded to `high` precision. diff --git a/cpp/ql/src/change-notes/2026-04-02-integer-multiplication-cast-to-long.md b/cpp/ql/src/change-notes/2026-04-02-integer-multiplication-cast-to-long.md new file mode 100644 index 000000000000..cd6796b408f0 --- /dev/null +++ b/cpp/ql/src/change-notes/2026-04-02-integer-multiplication-cast-to-long.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Multiplication result converted to larger type" (`cpp/integer-multiplication-cast-to-long`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. diff --git a/cpp/ql/src/change-notes/2026-04-02-suspicious-add-sizeof.md b/cpp/ql/src/change-notes/2026-04-02-suspicious-add-sizeof.md new file mode 100644 index 000000000000..040e89c13475 --- /dev/null +++ b/cpp/ql/src/change-notes/2026-04-02-suspicious-add-sizeof.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Suspicious add with sizeof" (`cpp/suspicious-add-sizeof`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. diff --git a/cpp/ql/src/change-notes/2026-04-02-wrong-type-format-argument.md b/cpp/ql/src/change-notes/2026-04-02-wrong-type-format-argument.md new file mode 100644 index 000000000000..f8b9085dacc6 --- /dev/null +++ b/cpp/ql/src/change-notes/2026-04-02-wrong-type-format-argument.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Wrong type of arguments to formatting function" (`cpp/wrong-type-format-argument`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. diff --git a/cpp/ql/src/change-notes/2026-04-16-add-model-for-aligned-alloc.md b/cpp/ql/src/change-notes/2026-04-16-add-model-for-aligned-alloc.md new file mode 100644 index 000000000000..af97cee7f9e4 --- /dev/null +++ b/cpp/ql/src/change-notes/2026-04-16-add-model-for-aligned-alloc.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added `AllocationFunction` models for `aligned_alloc`, `std::aligned_alloc`, and `bsl::aligned_alloc`. diff --git a/cpp/ql/src/change-notes/released/1.5.14.md b/cpp/ql/src/change-notes/released/1.5.14.md new file mode 100644 index 000000000000..a165735f53db --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.14.md @@ -0,0 +1,3 @@ +## 1.5.14 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.15.md b/cpp/ql/src/change-notes/released/1.5.15.md new file mode 100644 index 000000000000..dd184231746a --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.15.md @@ -0,0 +1,3 @@ +## 1.5.15 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.6.0.md b/cpp/ql/src/change-notes/released/1.6.0.md new file mode 100644 index 000000000000..3bbb94806609 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.6.0.md @@ -0,0 +1,13 @@ +## 1.6.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `cpp/cgi-xss` has been increased from 6.1 (medium) to 7.8 (high). + +### Minor Analysis Improvements + +* The "Extraction warnings" (`cpp/diagnostics/extraction-warnings`) diagnostics query no longer yields `ExtractionRecoverableWarning`s for `build-mode: none` databases. The results were found to significantly increase the sizes of the produced SARIF files, making them unprocessable in some cases. +* Fixed an issue with the "Suspicious add with sizeof" (`cpp/suspicious-add-sizeof`) query causing false positive results in `build-mode: none` databases. +* Fixed an issue with the "Uncontrolled format string" (`cpp/tainted-format-string`) query involving certain kinds of formatting function implementations. +* Fixed an issue with the "Wrong type of arguments to formatting function" (`cpp/wrong-type-format-argument`) query causing false positive results in `build-mode: none` databases. +* Fixed an issue with the "Multiplication result converted to larger type" (`cpp/integer-multiplication-cast-to-long`) query causing false positive results in `build-mode: none` databases. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 63816b66f59f..c4f0b07d5336 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.13 +lastReleaseVersion: 1.6.0 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 5fb03d534347..4648951796cc 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.13 +version: 1.6.1-dev groups: - cpp - queries diff --git a/cpp/ql/test/library-tests/ctorinits/ctors.expected b/cpp/ql/test/library-tests/ctorinits/ctors.expected index 8a14ee6001ae..e8eba3385606 100644 --- a/cpp/ql/test/library-tests/ctorinits/ctors.expected +++ b/cpp/ql/test/library-tests/ctorinits/ctors.expected @@ -1,17 +1,17 @@ -| ctorinits.cpp:5:3:5:10 | NoisyInt | 0 | ConstructorFieldInit | ctorinits.cpp:5:29:5:42 | constructor init of field m_value | 1 | 0 | -| ctorinits.cpp:13:3:13:11 | NoisyPair | 0 | ConstructorFieldInit | ctorinits.cpp:14:7:14:16 | constructor init of field m_fst | 1 | 0 | -| ctorinits.cpp:13:3:13:11 | NoisyPair | 1 | ConstructorFieldInit | ctorinits.cpp:15:7:15:16 | constructor init of field m_snd | 1 | 0 | +| ctorinits.cpp:5:3:5:10 | NoisyInt | 0 | ConstructorDirectFieldInit | ctorinits.cpp:5:29:5:42 | constructor init of field m_value | 1 | 0 | +| ctorinits.cpp:13:3:13:11 | NoisyPair | 0 | ConstructorDirectFieldInit | ctorinits.cpp:14:7:14:16 | constructor init of field m_fst | 1 | 0 | +| ctorinits.cpp:13:3:13:11 | NoisyPair | 1 | ConstructorDirectFieldInit | ctorinits.cpp:15:7:15:16 | constructor init of field m_snd | 1 | 0 | | ctorinits.cpp:16:3:16:11 | NoisyPair | 0 | ConstructorDelegationInit | ctorinits.cpp:16:17:16:31 | call to NoisyPair | 2 | 2 | | ctorinits.cpp:21:8:21:8 | NoisyTriple | 0 | ConstructorDirectInit | ctorinits.cpp:21:8:21:8 | call to NoisyPair | 0 | 0 | -| ctorinits.cpp:21:8:21:8 | NoisyTriple | 1 | ConstructorFieldInit | ctorinits.cpp:21:8:21:8 | constructor init of field m_third | 1 | 0 | -| ctorinits.cpp:28:2:28:9 | ArrayInt | 0 | ConstructorFieldInit | ctorinits.cpp:28:13:28:13 | constructor init of field m_array | 1 | 0 | -| ctorinits.cpp:42:2:42:16 | ArrayMemberInit | 0 | ConstructorFieldInit | ctorinits.cpp:42:22:42:32 | constructor init of field xs | 1 | 4 | +| ctorinits.cpp:21:8:21:8 | NoisyTriple | 1 | ConstructorDirectFieldInit | ctorinits.cpp:21:8:21:8 | constructor init of field m_third | 1 | 0 | +| ctorinits.cpp:28:2:28:9 | ArrayInt | 0 | ConstructorDirectFieldInit | ctorinits.cpp:28:13:28:13 | constructor init of field m_array | 1 | 0 | +| ctorinits.cpp:42:2:42:16 | ArrayMemberInit | 0 | ConstructorDirectFieldInit | ctorinits.cpp:42:22:42:32 | constructor init of field xs | 1 | 4 | | ctorinits.cpp:65:3:65:15 | MultipleBases | 0 | ConstructorDirectInit | ctorinits.cpp:69:5:69:8 | call to A | 1 | 1 | | ctorinits.cpp:65:3:65:15 | MultipleBases | 1 | ConstructorDirectInit | ctorinits.cpp:67:5:67:8 | call to B | 1 | 1 | | ctorinits.cpp:65:3:65:15 | MultipleBases | 2 | ConstructorDirectInit | ctorinits.cpp:70:5:70:8 | call to C | 1 | 1 | -| ctorinits.cpp:65:3:65:15 | MultipleBases | 3 | ConstructorFieldInit | ctorinits.cpp:68:5:68:8 | constructor init of field x | 1 | 1 | -| ctorinits.cpp:65:3:65:15 | MultipleBases | 4 | ConstructorFieldInit | ctorinits.cpp:71:5:71:8 | constructor init of field y | 1 | 1 | -| ctorinits.cpp:65:3:65:15 | MultipleBases | 5 | ConstructorFieldInit | ctorinits.cpp:66:5:66:8 | constructor init of field z | 1 | 1 | +| ctorinits.cpp:65:3:65:15 | MultipleBases | 3 | ConstructorDirectFieldInit | ctorinits.cpp:68:5:68:8 | constructor init of field x | 1 | 1 | +| ctorinits.cpp:65:3:65:15 | MultipleBases | 4 | ConstructorDirectFieldInit | ctorinits.cpp:71:5:71:8 | constructor init of field y | 1 | 1 | +| ctorinits.cpp:65:3:65:15 | MultipleBases | 5 | ConstructorDirectFieldInit | ctorinits.cpp:66:5:66:8 | constructor init of field z | 1 | 1 | | ctorinits.cpp:81:8:81:8 | VD | 0 | ConstructorVirtualInit | ctorinits.cpp:81:8:81:8 | call to VB | 0 | 0 | | ctorinits.cpp:85:3:85:22 | VirtualAndNonVirtual | 0 | ConstructorVirtualInit | ctorinits.cpp:85:26:85:26 | call to VB | 0 | 0 | | ctorinits.cpp:85:3:85:22 | VirtualAndNonVirtual | 1 | ConstructorDirectInit | ctorinits.cpp:85:26:85:26 | call to VD | 0 | 0 | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected index ff41f299f9c2..4e145427a362 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected @@ -10,11 +10,13 @@ uniqueEnclosingCallable | test.cpp:1158:18:1158:42 | ... , ... | Node should have one enclosing callable but has 0. | | test.cpp:1158:23:1158:31 | recursion | Node should have one enclosing callable but has 0. | | test.cpp:1158:35:1158:40 | call to source | Node should have one enclosing callable but has 0. | +| test.cpp:1318:13:1318:18 | call to source | Node should have one enclosing callable but has 0. | uniqueCallEnclosingCallable | test.cpp:864:47:864:54 | call to source | Call should have one enclosing callable but has 0. | | test.cpp:872:46:872:51 | call to source | Call should have one enclosing callable but has 0. | | test.cpp:1158:18:1158:21 | call to sink | Call should have one enclosing callable but has 0. | | test.cpp:1158:35:1158:40 | call to source | Call should have one enclosing callable but has 0. | +| test.cpp:1318:13:1318:18 | call to source | Call should have one enclosing callable but has 0. | uniqueType uniqueNodeLocation missingLocation diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected index 03a106208a5b..5ee2ca86cbcf 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected @@ -170,6 +170,7 @@ astFlow | test.cpp:1308:7:1308:12 | call to source | test.cpp:1309:14:1309:16 | ... ++ | | test.cpp:1312:7:1312:12 | call to source | test.cpp:1313:8:1313:24 | ... ? ... : ... | | test.cpp:1312:7:1312:12 | call to source | test.cpp:1314:8:1314:8 | x | +| test.cpp:1329:11:1329:16 | call to source | test.cpp:1330:10:1330:10 | i | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | | true_upon_entry.cpp:33:11:33:16 | call to source | true_upon_entry.cpp:39:8:39:8 | x | @@ -390,6 +391,8 @@ irFlow | test.cpp:1308:7:1308:12 | call to source | test.cpp:1309:8:1309:16 | ... ++ | | test.cpp:1312:7:1312:12 | call to source | test.cpp:1313:8:1313:24 | ... ? ... : ... | | test.cpp:1312:7:1312:12 | call to source | test.cpp:1314:8:1314:8 | x | +| test.cpp:1318:13:1318:18 | call to source | test.cpp:1327:10:1327:10 | i | +| test.cpp:1329:11:1329:16 | call to source | test.cpp:1330:10:1330:10 | i | | true_upon_entry.cpp:9:11:9:16 | call to source | true_upon_entry.cpp:13:8:13:8 | x | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index e1c3ef98fb74..892d49b00855 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1312,4 +1312,20 @@ void crement_test2(bool b, int y) { x = source(); sink(b ? (long)x++ : 0); // $ ir ast sink(x); // $ ir ast -} \ No newline at end of file +} + +struct nsdmi { + int i = source(); + + nsdmi() {} + + nsdmi(int i) : i(i) {} +}; + +void nsdmi_test() { + nsdmi x; + sink(x.i); // $ ir MISSING: ast + + nsdmi y(source()); + sink(y.i); // $ ir ast +} diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected index 87ebdc9e83a3..2ba0cf2928b8 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected @@ -1,41 +1,5 @@ astTypeBugs irTypeBugs -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary param] *0 in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary param] this in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] read: Argument[*0].Element in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] read: Argument[*0].Element[****] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] read: Argument[*0].Element[***] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] read: Argument[*0].Element[**] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] read: Argument[*0].Element[*] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] to write: Argument[this] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] to write: Argument[this].Element in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] to write: Argument[this].Element[****] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] to write: Argument[this].Element[***] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] to write: Argument[this].Element[**] in iterator | -| ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | ../../../include/iterator.h:21:3:21:10 | [summary] to write: Argument[this].Element[*] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary param] *0 in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary param] this in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] read: Argument[*0].Element in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] read: Argument[*0].Element[****] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] read: Argument[*0].Element[***] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] read: Argument[*0].Element[**] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] read: Argument[*0].Element[*] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] to write: Argument[this] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] to write: Argument[this].Element in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] to write: Argument[this].Element[****] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] to write: Argument[this].Element[***] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] to write: Argument[this].Element[**] in iterator | -| ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | ../../../include/iterator.h:22:3:22:10 | [summary] to write: Argument[this].Element[*] in iterator | -| ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | [summary param] this in operator* | -| ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | [summary] read: Argument[this].Element in operator* | -| ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | [summary] read: Argument[this].Element[*] in operator* | -| ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | [summary] to write: ReturnValue[**] in operator* | -| ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | ../../../include/iterator.h:30:18:30:26 | [summary] to write: ReturnValue[*] in operator* | -| ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | [summary param] this in operator-> | -| ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | [summary] read: Argument[this].Element in operator-> | -| ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | [summary] read: Argument[this].Element[*] in operator-> | -| ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | [summary] to write: ReturnValue[**] in operator-> | -| ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | ../../../include/iterator.h:31:16:31:25 | [summary] to write: ReturnValue[*] in operator-> | incorrectBaseType | clang.cpp:22:8:22:20 | *& ... | Expected 'Node.getType()' to be int, but it was int * | | clang.cpp:23:17:23:29 | *& ... | Expected 'Node.getType()' to be int, but it was int * | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql index 3e5f9165ef81..3fcf39ef1c55 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql @@ -17,9 +17,13 @@ import AstTest module IrTest { private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil + private import semmle.code.cpp.ir.dataflow.internal.DataFlowNodes query predicate irTypeBugs(Location location, Node node) { exists(int n | + // Flow summary nodes don't have a type since we don't necessarily have + // the source code in the database. + not node instanceof FlowSummaryNode and n = count(node.getType()) and location = node.getLocation() and n != 1 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 1e46060c97ed..4142b09473a9 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -4,121 +4,124 @@ models | 3 | Source: ; ; false; GetCommandLineA; ; ; ReturnValue[*]; local; manual | | 4 | Source: ; ; false; GetEnvironmentStringsA; ; ; ReturnValue[*]; local; manual | | 5 | Source: ; ; false; GetEnvironmentVariableA; ; ; Argument[*1]; local; manual | -| 6 | Source: ; ; false; MapViewOfFile2; ; ; ReturnValue[*]; local; manual | -| 7 | Source: ; ; false; MapViewOfFile3; ; ; ReturnValue[*]; local; manual | -| 8 | Source: ; ; false; MapViewOfFile3FromApp; ; ; ReturnValue[*]; local; manual | -| 9 | Source: ; ; false; MapViewOfFile; ; ; ReturnValue[*]; local; manual | -| 10 | Source: ; ; false; MapViewOfFileEx; ; ; ReturnValue[*]; local; manual | -| 11 | Source: ; ; false; MapViewOfFileFromApp; ; ; ReturnValue[*]; local; manual | -| 12 | Source: ; ; false; MapViewOfFileNuma2; ; ; ReturnValue[*]; local; manual | -| 13 | Source: ; ; false; NtReadFile; ; ; Argument[*5]; local; manual | -| 14 | Source: ; ; false; ReadFile; ; ; Argument[*1]; local; manual | -| 15 | Source: ; ; false; ReadFileEx; ; ; Argument[*1]; local; manual | -| 16 | Source: ; ; false; WinHttpQueryHeaders; ; ; Argument[*3]; remote; manual | -| 17 | Source: ; ; false; WinHttpQueryHeadersEx; ; ; Argument[**8]; remote; manual | -| 18 | Source: ; ; false; WinHttpQueryHeadersEx; ; ; Argument[*5]; remote; manual | -| 19 | Source: ; ; false; WinHttpQueryHeadersEx; ; ; Argument[*6]; remote; manual | -| 20 | Source: ; ; false; WinHttpReadData; ; ; Argument[*1]; remote; manual | -| 21 | Source: ; ; false; WinHttpReadDataEx; ; ; Argument[*1]; remote; manual | -| 22 | Source: ; ; false; ymlSource; ; ; ReturnValue; local; manual | -| 23 | Source: Azure::Core::Http; RawResponse; true; ExtractBodyStream; ; ; ReturnValue[*]; remote; manual | -| 24 | Source: Azure::Core::Http; RawResponse; true; GetBody; ; ; ReturnValue[*]; remote; manual | -| 25 | Source: Azure::Core::Http; RawResponse; true; GetHeaders; ; ; ReturnValue[*]; remote; manual | -| 26 | Source: Azure::Core::Http; Request; true; GetBodyStream; ; ; ReturnValue[*]; remote; manual | -| 27 | Source: Azure::Core::Http; Request; true; GetHeader; ; ; ReturnValue; remote; manual | -| 28 | Source: Azure::Core::Http; Request; true; GetHeaders; ; ; ReturnValue; remote; manual | -| 29 | Source: boost::asio; ; false; read_until; ; ; Argument[*1]; remote; manual | -| 30 | Summary: ; ; false; CommandLineToArgvA; ; ; Argument[*0]; ReturnValue[**]; taint; manual | -| 31 | Summary: ; ; false; CreateRemoteThread; ; ; Argument[@4]; Argument[3].Parameter[@0]; value; manual | -| 32 | Summary: ; ; false; CreateRemoteThreadEx; ; ; Argument[@4]; Argument[3].Parameter[@0]; value; manual | -| 33 | Summary: ; ; false; CreateThread; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | -| 34 | Summary: ; ; false; ReadFileEx; ; ; Argument[*3].Field[@hEvent]; Argument[4].Parameter[*2].Field[@hEvent]; value; manual | -| 35 | Summary: ; ; false; RtlCopyDeviceMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | -| 36 | Summary: ; ; false; RtlCopyMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | -| 37 | Summary: ; ; false; RtlCopyMemoryNonTemporal; ; ; Argument[*@1]; Argument[*@0]; value; manual | -| 38 | Summary: ; ; false; RtlCopyUnicodeString; ; ; Argument[*1].Field[*Buffer]; Argument[*0].Field[*Buffer]; value; manual | -| 39 | Summary: ; ; false; RtlCopyVolatileMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | -| 40 | Summary: ; ; false; RtlInitUnicodeString; ; ; Argument[*1]; Argument[*0].Field[*Buffer]; value; manual | -| 41 | Summary: ; ; false; RtlMoveMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | -| 42 | Summary: ; ; false; RtlMoveVolatileMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | -| 43 | Summary: ; ; false; WinHttpCrackUrl; ; ; Argument[*0]; Argument[*3]; taint; manual | -| 44 | Summary: ; ; false; callWithArgument; ; ; Argument[1]; Argument[0].Parameter[0]; value; manual | -| 45 | Summary: ; ; false; callWithNonTypeTemplate; (const T &); ; Argument[*0]; ReturnValue; value; manual | -| 46 | Summary: ; ; false; pthread_create; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | -| 47 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | -| 48 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | -| 49 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | -| 50 | Summary: Azure::Core::IO; BodyStream; true; Read; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 51 | Summary: Azure::Core::IO; BodyStream; true; ReadToCount; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 52 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual | -| 53 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual | -| 54 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 6 | Source: ; ; false; HttpReceiveClientCertificate; ; ; Argument[*3]; remote; manual | +| 7 | Source: ; ; false; HttpReceiveHttpRequest; ; ; Argument[*3]; remote; manual | +| 8 | Source: ; ; false; HttpReceiveRequestEntityBody; ; ; Argument[*3]; remote; manual | +| 9 | Source: ; ; false; MapViewOfFile2; ; ; ReturnValue[*]; local; manual | +| 10 | Source: ; ; false; MapViewOfFile3; ; ; ReturnValue[*]; local; manual | +| 11 | Source: ; ; false; MapViewOfFile3FromApp; ; ; ReturnValue[*]; local; manual | +| 12 | Source: ; ; false; MapViewOfFile; ; ; ReturnValue[*]; local; manual | +| 13 | Source: ; ; false; MapViewOfFileEx; ; ; ReturnValue[*]; local; manual | +| 14 | Source: ; ; false; MapViewOfFileFromApp; ; ; ReturnValue[*]; local; manual | +| 15 | Source: ; ; false; MapViewOfFileNuma2; ; ; ReturnValue[*]; local; manual | +| 16 | Source: ; ; false; NtReadFile; ; ; Argument[*5]; local; manual | +| 17 | Source: ; ; false; ReadFile; ; ; Argument[*1]; local; manual | +| 18 | Source: ; ; false; ReadFileEx; ; ; Argument[*1]; local; manual | +| 19 | Source: ; ; false; WinHttpQueryHeaders; ; ; Argument[*3]; remote; manual | +| 20 | Source: ; ; false; WinHttpQueryHeadersEx; ; ; Argument[**8]; remote; manual | +| 21 | Source: ; ; false; WinHttpQueryHeadersEx; ; ; Argument[*5]; remote; manual | +| 22 | Source: ; ; false; WinHttpQueryHeadersEx; ; ; Argument[*6]; remote; manual | +| 23 | Source: ; ; false; WinHttpReadData; ; ; Argument[*1]; remote; manual | +| 24 | Source: ; ; false; WinHttpReadDataEx; ; ; Argument[*1]; remote; manual | +| 25 | Source: ; ; false; ymlSource; ; ; ReturnValue; local; manual | +| 26 | Source: Azure::Core::Http; RawResponse; true; ExtractBodyStream; ; ; ReturnValue[*]; remote; manual | +| 27 | Source: Azure::Core::Http; RawResponse; true; GetBody; ; ; ReturnValue[*]; remote; manual | +| 28 | Source: Azure::Core::Http; RawResponse; true; GetHeaders; ; ; ReturnValue[*]; remote; manual | +| 29 | Source: Azure::Core::Http; Request; true; GetBodyStream; ; ; ReturnValue[*]; remote; manual | +| 30 | Source: Azure::Core::Http; Request; true; GetHeader; ; ; ReturnValue; remote; manual | +| 31 | Source: Azure::Core::Http; Request; true; GetHeaders; ; ; ReturnValue; remote; manual | +| 32 | Source: boost::asio; ; false; read_until; ; ; Argument[*1]; remote; manual | +| 33 | Summary: ; ; false; CommandLineToArgvA; ; ; Argument[*0]; ReturnValue[**]; taint; manual | +| 34 | Summary: ; ; false; CreateRemoteThread; ; ; Argument[@4]; Argument[3].Parameter[@0]; value; manual | +| 35 | Summary: ; ; false; CreateRemoteThreadEx; ; ; Argument[@4]; Argument[3].Parameter[@0]; value; manual | +| 36 | Summary: ; ; false; CreateThread; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | +| 37 | Summary: ; ; false; ReadFileEx; ; ; Argument[*3].Field[@hEvent]; Argument[4].Parameter[*2].Field[@hEvent]; value; manual | +| 38 | Summary: ; ; false; RtlCopyDeviceMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | +| 39 | Summary: ; ; false; RtlCopyMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | +| 40 | Summary: ; ; false; RtlCopyMemoryNonTemporal; ; ; Argument[*@1]; Argument[*@0]; value; manual | +| 41 | Summary: ; ; false; RtlCopyUnicodeString; ; ; Argument[*1].Field[*Buffer]; Argument[*0].Field[*Buffer]; value; manual | +| 42 | Summary: ; ; false; RtlCopyVolatileMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | +| 43 | Summary: ; ; false; RtlInitUnicodeString; ; ; Argument[*1]; Argument[*0].Field[*Buffer]; value; manual | +| 44 | Summary: ; ; false; RtlMoveMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | +| 45 | Summary: ; ; false; RtlMoveVolatileMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | +| 46 | Summary: ; ; false; WinHttpCrackUrl; ; ; Argument[*0]; Argument[*3]; taint; manual | +| 47 | Summary: ; ; false; callWithArgument; ; ; Argument[1]; Argument[0].Parameter[0]; value; manual | +| 48 | Summary: ; ; false; callWithNonTypeTemplate; (const T &); ; Argument[*0]; ReturnValue; value; manual | +| 49 | Summary: ; ; false; pthread_create; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | +| 50 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | +| 51 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | +| 52 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | +| 53 | Summary: Azure::Core::IO; BodyStream; true; Read; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 54 | Summary: Azure::Core::IO; BodyStream; true; ReadToCount; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 55 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual | +| 56 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 57 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | edges -| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:54 | -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:29 | -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:29 Sink:MaD:2 | +| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:57 | +| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:32 | +| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:32 Sink:MaD:2 | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:98:7:98:14 | send_str | provenance | TaintFunction | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:100:64:100:71 | *send_str | provenance | TaintFunction | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:2 | | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:54 | -| azure.cpp:62:10:62:14 | [summary param] this in Value | azure.cpp:62:10:62:14 | [summary] to write: ReturnValue[*] in Value | provenance | MaD:53 | -| azure.cpp:113:16:113:19 | [summary param] this in Read | azure.cpp:113:16:113:19 | [summary param] *0 in Read [Return] | provenance | MaD:50 | -| azure.cpp:114:16:114:26 | [summary param] this in ReadToCount | azure.cpp:114:16:114:26 | [summary param] *0 in ReadToCount [Return] | provenance | MaD:51 | -| azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue.Element in ReadToEnd | provenance | MaD:52 | +| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:57 | +| azure.cpp:62:10:62:14 | [summary param] this in Value | azure.cpp:62:10:62:14 | [summary] to write: ReturnValue[*] in Value | provenance | MaD:56 | +| azure.cpp:113:16:113:19 | [summary param] this in Read | azure.cpp:113:16:113:19 | [summary param] *0 in Read [Return] | provenance | MaD:53 | +| azure.cpp:114:16:114:26 | [summary param] this in ReadToCount | azure.cpp:114:16:114:26 | [summary param] *0 in ReadToCount [Return] | provenance | MaD:54 | +| azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue.Element in ReadToEnd | provenance | MaD:55 | | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue.Element in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue in ReadToEnd [element] | provenance | | -| azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:253:48:253:60 | *call to GetBodyStream | provenance | Src:MaD:26 | +| azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:253:48:253:60 | *call to GetBodyStream | provenance | Src:MaD:29 | | 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:257:5:257:8 | *resp | azure.cpp:113:16:113:19 | [summary param] this in Read | provenance | | -| azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | provenance | MaD:50 | +| azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | provenance | MaD:53 | | 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:114:16:114:26 | [summary param] this in ReadToCount | provenance | | -| azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | provenance | MaD:51 | +| azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | provenance | MaD:54 | | 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:115:30:115:38 | [summary param] this in ReadToEnd | provenance | | -| azure.cpp:266:38:266:41 | *resp | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | MaD:52 | +| azure.cpp:266:38:266:41 | *resp | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | MaD:55 | | 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 | | -| azure.cpp:273:62:273:64 | call to GetHeaders | azure.cpp:273:62:273:64 | call to GetHeaders | provenance | Src:MaD:25 | +| azure.cpp:273:62:273:64 | call to GetHeaders | azure.cpp:273:62:273:64 | call to GetHeaders | provenance | Src:MaD:28 | | azure.cpp:273:62:273:64 | call to GetHeaders | azure.cpp:274:14:274:29 | call to operator[] | provenance | TaintFunction | | azure.cpp:273:62:273:64 | call to GetHeaders | azure.cpp:274:14:274:29 | call to operator[] | provenance | TaintFunction | | azure.cpp:273:62:273:64 | call to GetHeaders | azure.cpp:274:14:274:29 | call to operator[] | provenance | TaintFunction | | azure.cpp:274:14:274:29 | call to operator[] | azure.cpp:274:10:274:29 | call to operator[] | provenance | | | azure.cpp:274:14:274:29 | call to operator[] | azure.cpp:274:14:274:29 | call to operator[] | provenance | | -| azure.cpp:277:45:277:47 | call to GetBody | azure.cpp:277:45:277:47 | call to GetBody | provenance | Src:MaD:24 | +| azure.cpp:277:45:277:47 | call to GetBody | azure.cpp:277:45:277:47 | call to GetBody | provenance | Src:MaD:27 | | azure.cpp:277:45:277:47 | call to GetBody | azure.cpp:278:10:278:13 | body | provenance | | | azure.cpp:277:45:277:47 | call to GetBody | azure.cpp:278:10:278:13 | body | provenance | | | 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:281:68:281:84 | *call to ExtractBodyStream | provenance | Src:MaD:23 | +| azure.cpp:281:68:281:84 | *call to ExtractBodyStream | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | provenance | Src:MaD:26 | | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | azure.cpp:282:21:282:23 | *call to get | provenance | | | azure.cpp:282:21:282:23 | *call to get | azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | provenance | | -| azure.cpp:282:21:282:23 | *call to get | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | MaD:52 | +| azure.cpp:282:21:282:23 | *call to get | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | MaD:55 | | 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:62:10:62:14 | [summary param] this in Value | provenance | | -| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | provenance | MaD:53 | +| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | provenance | MaD:56 | | 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:27 | +| azure.cpp:289:32:289:40 | call to GetHeader | azure.cpp:289:32:289:40 | call to GetHeader | provenance | Src:MaD:30 | | azure.cpp:289:63:289:65 | call to Value | azure.cpp:289:63:289:65 | call to Value | provenance | | | azure.cpp:289:63:289:65 | call to Value | azure.cpp:290:10:290:20 | headerValue | provenance | | | azure.cpp:289:63:289:65 | call to Value | azure.cpp:290:10:290:20 | headerValue | provenance | | | azure.cpp:290:10:290:20 | headerValue | azure.cpp:290:10:290:20 | headerValue | provenance | | -| azure.cpp:293:58:293:67 | call to GetHeaders | azure.cpp:293:58:293:67 | call to GetHeaders | provenance | Src:MaD:28 | +| azure.cpp:293:58:293:67 | call to GetHeaders | azure.cpp:293:58:293:67 | call to GetHeaders | provenance | Src:MaD:31 | | azure.cpp:293:58:293:67 | call to GetHeaders | azure.cpp:294:38:294:53 | call to operator[] | provenance | TaintFunction | | 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 | | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:48 | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:47 | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:49 | +| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:51 | +| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:50 | +| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:52 | | 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:22 | +| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:1 | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:17:24:17:24 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:21:27:21:27 | x | provenance | | @@ -127,15 +130,15 @@ edges | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:1 | | test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | | -| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:48 | +| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:51 | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:1 | | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | | -| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:47 | +| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:50 | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:1 | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | | -| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:49 | +| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:52 | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:1 | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | | @@ -143,16 +146,16 @@ edges | test.cpp:46:30:46:32 | *arg [x] | test.cpp:47:12:47:19 | *arg [x] | provenance | | | test.cpp:47:12:47:19 | *arg [x] | test.cpp:48:13:48:13 | *s [x] | provenance | | | test.cpp:48:13:48:13 | *s [x] | test.cpp:48:16:48:16 | x | provenance | Sink:MaD:1 | -| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:46 | +| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:49 | | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | test.cpp:46:30:46:32 | *arg [x] | provenance | | | test.cpp:56:2:56:2 | *s [post update] [x] | test.cpp:59:55:59:64 | *& ... [x] | provenance | | | test.cpp:56:2:56:18 | ... = ... | test.cpp:56:2:56:2 | *s [post update] [x] | provenance | | -| test.cpp:56:8:56:16 | call to ymlSource | test.cpp:56:2:56:18 | ... = ... | provenance | Src:MaD:22 | +| test.cpp:56:8:56:16 | call to ymlSource | test.cpp:56:2:56:18 | ... = ... | provenance | Src:MaD:25 | | test.cpp:59:55:59:64 | *& ... [x] | test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | provenance | | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:44 | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:44 | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:44 | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:44 | +| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | +| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | +| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | +| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:68:22:68:22 | y | provenance | | | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:74:22:74:22 | y | provenance | | | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:82:22:82:22 | y | provenance | | @@ -161,7 +164,7 @@ edges | test.cpp:74:22:74:22 | y | test.cpp:75:11:75:11 | y | provenance | Sink:MaD:1 | | test.cpp:82:22:82:22 | y | test.cpp:83:11:83:11 | y | provenance | Sink:MaD:1 | | test.cpp:88:22:88:22 | y | test.cpp:89:11:89:11 | y | provenance | Sink:MaD:1 | -| test.cpp:94:10:94:18 | call to ymlSource | test.cpp:94:10:94:18 | call to ymlSource | provenance | Src:MaD:22 | +| test.cpp:94:10:94:18 | call to ymlSource | test.cpp:94:10:94:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:94:10:94:18 | call to ymlSource | test.cpp:97:26:97:26 | x | provenance | | | test.cpp:94:10:94:18 | call to ymlSource | test.cpp:101:26:101:26 | x | provenance | | | test.cpp:94:10:94:18 | call to ymlSource | test.cpp:103:63:103:63 | x | provenance | | @@ -170,28 +173,28 @@ edges | test.cpp:101:26:101:26 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:103:63:103:63 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:104:62:104:62 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | -| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:45 | -| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:114:10:114:18 | call to ymlSource | provenance | Src:MaD:22 | +| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:48 | +| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:114:10:114:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:114:10:114:18 | call to ymlSource | test.cpp:118:44:118:44 | *x | provenance | | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:119:10:119:11 | y2 | provenance | Sink:MaD:1 | | test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | -| test.cpp:118:44:118:44 | *x | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | MaD:45 | -| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:30 | +| test.cpp:118:44:118:44 | *x | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | MaD:48 | +| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:33 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:3 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:24:8:24:11 | * ... | provenance | | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:27:36:27:38 | *cmd | provenance | | | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | | | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | windows.cpp:30:8:30:15 | * ... | provenance | | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | provenance | | -| windows.cpp:27:36:27:38 | *cmd | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | MaD:30 | +| windows.cpp:27:36:27:38 | *cmd | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | MaD:33 | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | provenance | Src:MaD:4 | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:36:10:36:13 | * ... | provenance | | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | windows.cpp:41:10:41:13 | * ... | provenance | Src:MaD:5 | | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | provenance | | | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | provenance | | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | provenance | MaD:34 | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | provenance | MaD:34 | +| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | provenance | MaD:37 | +| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | provenance | MaD:37 | | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | windows.cpp:147:16:147:27 | *lpOverlapped [*hEvent] | provenance | | | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [hEvent] | windows.cpp:157:16:157:27 | *lpOverlapped [hEvent] | provenance | | | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | provenance | | @@ -207,43 +210,43 @@ edges | windows.cpp:159:12:159:55 | hEvent | windows.cpp:160:8:160:8 | c | provenance | | | windows.cpp:159:35:159:46 | *lpOverlapped [hEvent] | windows.cpp:159:12:159:55 | hEvent | provenance | | | windows.cpp:159:35:159:46 | *lpOverlapped [hEvent] | windows.cpp:159:12:159:55 | hEvent | provenance | | -| windows.cpp:168:35:168:40 | ReadFile output argument | windows.cpp:170:10:170:16 | * ... | provenance | Src:MaD:14 | -| windows.cpp:177:23:177:28 | ReadFileEx output argument | windows.cpp:179:10:179:16 | * ... | provenance | Src:MaD:15 | -| windows.cpp:189:21:189:26 | ReadFile output argument | windows.cpp:190:5:190:56 | *... = ... | provenance | Src:MaD:14 | +| windows.cpp:168:35:168:40 | ReadFile output argument | windows.cpp:170:10:170:16 | * ... | provenance | Src:MaD:17 | +| windows.cpp:177:23:177:28 | ReadFileEx output argument | windows.cpp:179:10:179:16 | * ... | provenance | Src:MaD:18 | +| windows.cpp:189:21:189:26 | ReadFile output argument | windows.cpp:190:5:190:56 | *... = ... | provenance | Src:MaD:17 | | windows.cpp:190:5:190:14 | *overlapped [post update] [*hEvent] | windows.cpp:192:53:192:63 | *& ... [*hEvent] | provenance | | | windows.cpp:190:5:190:56 | *... = ... | windows.cpp:190:5:190:14 | *overlapped [post update] [*hEvent] | provenance | | | windows.cpp:192:53:192:63 | *& ... [*hEvent] | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | provenance | | -| windows.cpp:198:21:198:26 | ReadFile output argument | windows.cpp:199:5:199:57 | ... = ... | provenance | Src:MaD:14 | +| windows.cpp:198:21:198:26 | ReadFile output argument | windows.cpp:199:5:199:57 | ... = ... | provenance | Src:MaD:17 | | windows.cpp:199:5:199:14 | *overlapped [post update] [hEvent] | windows.cpp:201:53:201:63 | *& ... [hEvent] | provenance | | | windows.cpp:199:5:199:57 | ... = ... | windows.cpp:199:5:199:14 | *overlapped [post update] [hEvent] | provenance | | | windows.cpp:201:53:201:63 | *& ... [hEvent] | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | provenance | | -| windows.cpp:209:84:209:89 | NtReadFile output argument | windows.cpp:211:10:211:16 | * ... | provenance | Src:MaD:13 | -| windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:286:23:286:35 | *call to MapViewOfFile | provenance | Src:MaD:9 | +| windows.cpp:209:84:209:89 | NtReadFile output argument | windows.cpp:211:10:211:16 | * ... | provenance | Src:MaD:16 | +| windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:286:23:286:35 | *call to MapViewOfFile | provenance | Src:MaD:12 | | windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:287:20:287:52 | *pMapView | provenance | | | windows.cpp:287:20:287:52 | *pMapView | windows.cpp:289:10:289:16 | * ... | provenance | | -| windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | provenance | Src:MaD:6 | +| windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | provenance | Src:MaD:9 | | windows.cpp:293:23:293:36 | *call to MapViewOfFile2 | windows.cpp:294:20:294:52 | *pMapView | provenance | | | windows.cpp:294:20:294:52 | *pMapView | windows.cpp:296:10:296:16 | * ... | provenance | | -| windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | provenance | Src:MaD:7 | +| windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | provenance | Src:MaD:10 | | windows.cpp:302:23:302:36 | *call to MapViewOfFile3 | windows.cpp:303:20:303:52 | *pMapView | provenance | | | windows.cpp:303:20:303:52 | *pMapView | windows.cpp:305:10:305:16 | * ... | provenance | | -| windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | provenance | Src:MaD:8 | +| windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | provenance | Src:MaD:11 | | windows.cpp:311:23:311:43 | *call to MapViewOfFile3FromApp | windows.cpp:312:20:312:52 | *pMapView | provenance | | | windows.cpp:312:20:312:52 | *pMapView | windows.cpp:314:10:314:16 | * ... | provenance | | -| windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | provenance | Src:MaD:10 | +| windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | provenance | Src:MaD:13 | | windows.cpp:318:23:318:37 | *call to MapViewOfFileEx | windows.cpp:319:20:319:52 | *pMapView | provenance | | | windows.cpp:319:20:319:52 | *pMapView | windows.cpp:321:10:321:16 | * ... | provenance | | -| windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | provenance | Src:MaD:11 | +| windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | provenance | Src:MaD:14 | | windows.cpp:325:23:325:42 | *call to MapViewOfFileFromApp | windows.cpp:326:20:326:52 | *pMapView | provenance | | | windows.cpp:326:20:326:52 | *pMapView | windows.cpp:328:10:328:16 | * ... | provenance | | -| windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | provenance | Src:MaD:12 | +| windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | provenance | Src:MaD:15 | | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:333:20:333:52 | *pMapView | provenance | | | windows.cpp:333:20:333:52 | *pMapView | windows.cpp:335:10:335:16 | * ... | provenance | | -| windows.cpp:349:8:349:19 | [summary param] *3 in CreateThread [x] | windows.cpp:349:8:349:19 | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | provenance | MaD:33 | +| windows.cpp:349:8:349:19 | [summary param] *3 in CreateThread [x] | windows.cpp:349:8:349:19 | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | provenance | MaD:36 | | windows.cpp:349:8:349:19 | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | windows.cpp:403:26:403:36 | *lpParameter [x] | provenance | | -| windows.cpp:357:8:357:25 | [summary param] *4 in CreateRemoteThread [x] | windows.cpp:357:8:357:25 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | provenance | MaD:31 | +| windows.cpp:357:8:357:25 | [summary param] *4 in CreateRemoteThread [x] | windows.cpp:357:8:357:25 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | provenance | MaD:34 | | windows.cpp:357:8:357:25 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | windows.cpp:410:26:410:36 | *lpParameter [x] | provenance | | -| windows.cpp:387:8:387:27 | [summary param] *4 in CreateRemoteThreadEx [x] | windows.cpp:387:8:387:27 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | provenance | MaD:32 | +| windows.cpp:387:8:387:27 | [summary param] *4 in CreateRemoteThreadEx [x] | windows.cpp:387:8:387:27 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | provenance | MaD:35 | | windows.cpp:387:8:387:27 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | windows.cpp:417:26:417:36 | *lpParameter [x] | provenance | | | windows.cpp:403:26:403:36 | *lpParameter [x] | windows.cpp:405:10:405:25 | *lpParameter [x] | provenance | | | windows.cpp:405:10:405:25 | *lpParameter [x] | windows.cpp:406:8:406:8 | *s [x] | provenance | | @@ -262,17 +265,17 @@ edges | windows.cpp:439:7:439:8 | *& ... [x] | windows.cpp:349:8:349:19 | [summary param] *3 in CreateThread [x] | provenance | | | windows.cpp:451:7:451:8 | *& ... [x] | windows.cpp:357:8:357:25 | [summary param] *4 in CreateRemoteThread [x] | provenance | | | windows.cpp:464:7:464:8 | *& ... [x] | windows.cpp:387:8:387:27 | [summary param] *4 in CreateRemoteThreadEx [x] | provenance | | -| windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | provenance | MaD:39 | -| windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | provenance | MaD:35 | -| windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | windows.cpp:485:6:485:18 | [summary param] *0 in RtlCopyMemory [Return] | provenance | MaD:36 | -| windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | windows.cpp:493:6:493:29 | [summary param] *0 in RtlCopyMemoryNonTemporal [Return] | provenance | MaD:37 | +| windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | provenance | MaD:42 | +| windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | provenance | MaD:38 | +| windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | windows.cpp:485:6:485:18 | [summary param] *0 in RtlCopyMemory [Return] | provenance | MaD:39 | +| windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | windows.cpp:493:6:493:29 | [summary param] *0 in RtlCopyMemoryNonTemporal [Return] | provenance | MaD:40 | | windows.cpp:510:6:510:25 | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | windows.cpp:510:6:510:25 | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | provenance | | -| windows.cpp:510:6:510:25 | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | provenance | MaD:38 | +| windows.cpp:510:6:510:25 | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | provenance | MaD:41 | | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0] in RtlCopyUnicodeString [*Buffer] | windows.cpp:510:6:510:25 | [summary param] *0 in RtlCopyUnicodeString [Return] [*Buffer] | provenance | | | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0] in RtlCopyUnicodeString [*Buffer] | provenance | | -| windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | windows.cpp:515:6:515:18 | [summary param] *0 in RtlMoveMemory [Return] | provenance | MaD:41 | -| windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | windows.cpp:521:17:521:37 | [summary param] *0 in RtlMoveVolatileMemory [Return] | provenance | MaD:42 | -| windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | provenance | MaD:40 | +| windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | windows.cpp:515:6:515:18 | [summary param] *0 in RtlMoveMemory [Return] | provenance | MaD:44 | +| windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | windows.cpp:521:17:521:37 | [summary param] *0 in RtlMoveVolatileMemory [Return] | provenance | MaD:45 | +| windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | provenance | MaD:43 | | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0] in RtlInitUnicodeString [*Buffer] | windows.cpp:527:6:527:25 | [summary param] *0 in RtlInitUnicodeString [Return] [*Buffer] | provenance | | | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0] in RtlInitUnicodeString [*Buffer] | provenance | | | windows.cpp:533:11:533:16 | call to source | windows.cpp:533:11:533:16 | call to source | provenance | | @@ -284,51 +287,68 @@ edges | windows.cpp:533:11:533:16 | call to source | windows.cpp:573:40:573:41 | *& ... | provenance | | | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | windows.cpp:538:10:538:23 | access to array | provenance | | | windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | provenance | | -| windows.cpp:537:40:537:41 | *& ... | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | provenance | MaD:39 | +| windows.cpp:537:40:537:41 | *& ... | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | provenance | MaD:42 | | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | windows.cpp:543:10:543:23 | access to array | provenance | | | windows.cpp:542:38:542:39 | *& ... | windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | provenance | | -| windows.cpp:542:38:542:39 | *& ... | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | provenance | MaD:35 | +| windows.cpp:542:38:542:39 | *& ... | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | provenance | MaD:38 | | windows.cpp:547:19:547:29 | RtlCopyMemory output argument | windows.cpp:548:10:548:23 | access to array | provenance | | | windows.cpp:547:32:547:33 | *& ... | windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | provenance | | -| windows.cpp:547:32:547:33 | *& ... | windows.cpp:547:19:547:29 | RtlCopyMemory output argument | provenance | MaD:36 | +| windows.cpp:547:32:547:33 | *& ... | windows.cpp:547:19:547:29 | RtlCopyMemory output argument | provenance | MaD:39 | | windows.cpp:552:30:552:40 | RtlCopyMemoryNonTemporal output argument | windows.cpp:553:10:553:23 | access to array | provenance | | | windows.cpp:552:43:552:44 | *& ... | windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | provenance | | -| windows.cpp:552:43:552:44 | *& ... | windows.cpp:552:30:552:40 | RtlCopyMemoryNonTemporal output argument | provenance | MaD:37 | +| windows.cpp:552:43:552:44 | *& ... | windows.cpp:552:30:552:40 | RtlCopyMemoryNonTemporal output argument | provenance | MaD:40 | | windows.cpp:559:5:559:24 | ... = ... | windows.cpp:561:39:561:44 | *buffer | provenance | | | windows.cpp:559:17:559:24 | call to source | windows.cpp:559:5:559:24 | ... = ... | provenance | | | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | windows.cpp:562:10:562:19 | *src_string [*Buffer] | provenance | | | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | windows.cpp:563:40:563:50 | *& ... [*Buffer] | provenance | | | windows.cpp:561:39:561:44 | *buffer | windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | provenance | | -| windows.cpp:561:39:561:44 | *buffer | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | provenance | MaD:40 | +| windows.cpp:561:39:561:44 | *buffer | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | provenance | MaD:43 | | windows.cpp:562:10:562:19 | *src_string [*Buffer] | windows.cpp:562:10:562:29 | access to array | provenance | | | windows.cpp:562:10:562:19 | *src_string [*Buffer] | windows.cpp:562:21:562:26 | *Buffer | provenance | | | windows.cpp:562:21:562:26 | *Buffer | windows.cpp:562:10:562:29 | access to array | provenance | | | windows.cpp:563:26:563:37 | RtlCopyUnicodeString output argument [*Buffer] | windows.cpp:564:10:564:20 | *dest_string [*Buffer] | provenance | | | windows.cpp:563:40:563:50 | *& ... [*Buffer] | windows.cpp:510:6:510:25 | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | provenance | | -| windows.cpp:563:40:563:50 | *& ... [*Buffer] | windows.cpp:563:26:563:37 | RtlCopyUnicodeString output argument [*Buffer] | provenance | MaD:38 | +| windows.cpp:563:40:563:50 | *& ... [*Buffer] | windows.cpp:563:26:563:37 | RtlCopyUnicodeString output argument [*Buffer] | provenance | MaD:41 | | windows.cpp:564:10:564:20 | *dest_string [*Buffer] | windows.cpp:564:10:564:30 | access to array | provenance | | | windows.cpp:564:10:564:20 | *dest_string [*Buffer] | windows.cpp:564:22:564:27 | *Buffer | provenance | | | windows.cpp:564:22:564:27 | *Buffer | windows.cpp:564:10:564:30 | access to array | provenance | | | windows.cpp:568:19:568:29 | RtlMoveMemory output argument | windows.cpp:569:10:569:23 | access to array | provenance | | | windows.cpp:568:32:568:33 | *& ... | windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | provenance | | -| windows.cpp:568:32:568:33 | *& ... | windows.cpp:568:19:568:29 | RtlMoveMemory output argument | provenance | MaD:41 | +| windows.cpp:568:32:568:33 | *& ... | windows.cpp:568:19:568:29 | RtlMoveMemory output argument | provenance | MaD:44 | | windows.cpp:573:27:573:37 | RtlMoveVolatileMemory output argument | windows.cpp:574:10:574:23 | access to array | provenance | | | windows.cpp:573:40:573:41 | *& ... | windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | provenance | | -| windows.cpp:573:40:573:41 | *& ... | windows.cpp:573:27:573:37 | RtlMoveVolatileMemory output argument | provenance | MaD:42 | -| windows.cpp:645:45:645:50 | WinHttpReadData output argument | windows.cpp:647:10:647:16 | * ... | provenance | Src:MaD:20 | -| windows.cpp:652:48:652:53 | WinHttpReadDataEx output argument | windows.cpp:654:10:654:16 | * ... | provenance | Src:MaD:21 | -| windows.cpp:659:47:659:52 | WinHttpQueryHeaders output argument | windows.cpp:661:10:661:16 | * ... | provenance | Src:MaD:16 | -| windows.cpp:669:70:669:79 | WinHttpQueryHeadersEx output argument | windows.cpp:673:10:673:29 | * ... | provenance | Src:MaD:18 | -| windows.cpp:669:82:669:87 | WinHttpQueryHeadersEx output argument | windows.cpp:671:10:671:16 | * ... | provenance | Src:MaD:19 | -| windows.cpp:669:105:669:112 | WinHttpQueryHeadersEx output argument | windows.cpp:675:10:675:27 | * ... | provenance | Src:MaD:17 | -| windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | windows.cpp:714:6:714:20 | [summary param] *3 in WinHttpCrackUrl [Return] | provenance | MaD:43 | +| windows.cpp:573:40:573:41 | *& ... | windows.cpp:573:27:573:37 | RtlMoveVolatileMemory output argument | provenance | MaD:45 | +| windows.cpp:645:45:645:50 | WinHttpReadData output argument | windows.cpp:647:10:647:16 | * ... | provenance | Src:MaD:23 | +| windows.cpp:652:48:652:53 | WinHttpReadDataEx output argument | windows.cpp:654:10:654:16 | * ... | provenance | Src:MaD:24 | +| windows.cpp:659:47:659:52 | WinHttpQueryHeaders output argument | windows.cpp:661:10:661:16 | * ... | provenance | Src:MaD:19 | +| windows.cpp:669:70:669:79 | WinHttpQueryHeadersEx output argument | windows.cpp:673:10:673:29 | * ... | provenance | Src:MaD:21 | +| windows.cpp:669:82:669:87 | WinHttpQueryHeadersEx output argument | windows.cpp:671:10:671:16 | * ... | provenance | Src:MaD:22 | +| windows.cpp:669:105:669:112 | WinHttpQueryHeadersEx output argument | windows.cpp:675:10:675:27 | * ... | provenance | Src:MaD:20 | +| windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | windows.cpp:714:6:714:20 | [summary param] *3 in WinHttpCrackUrl [Return] | provenance | MaD:46 | | windows.cpp:728:5:728:28 | ... = ... | windows.cpp:729:35:729:35 | *x | provenance | | | windows.cpp:728:12:728:28 | call to source | windows.cpp:728:5:728:28 | ... = ... | provenance | | | windows.cpp:729:35:729:35 | *x | windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | provenance | | -| windows.cpp:729:35:729:35 | *x | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | provenance | MaD:43 | +| windows.cpp:729:35:729:35 | *x | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | provenance | MaD:46 | | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | windows.cpp:731:10:731:36 | * ... | provenance | | | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | windows.cpp:733:10:733:35 | * ... | provenance | | | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | windows.cpp:735:10:735:37 | * ... | provenance | | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:901:15:901:53 | *& ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:905:10:905:31 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:907:10:907:42 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:909:10:909:57 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:911:10:911:60 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:912:54:912:63 | FileHandle | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:914:10:914:70 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:916:10:916:72 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:918:10:918:64 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:920:10:920:51 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:922:10:922:52 | * ... | provenance | Src:MaD:7 | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | windows.cpp:924:10:924:63 | * ... | provenance | Src:MaD:7 | +| windows.cpp:901:15:901:53 | *& ... | windows.cpp:903:10:903:11 | * ... | provenance | | +| windows.cpp:929:70:929:75 | HttpReceiveRequestEntityBody output argument | windows.cpp:931:10:931:16 | * ... | provenance | Src:MaD:8 | +| windows.cpp:936:70:936:78 | HttpReceiveClientCertificate output argument | windows.cpp:937:15:937:48 | *& ... | provenance | Src:MaD:6 | +| windows.cpp:936:70:936:78 | HttpReceiveClientCertificate output argument | windows.cpp:941:10:941:31 | * ... | provenance | Src:MaD:6 | +| windows.cpp:937:15:937:48 | *& ... | windows.cpp:939:10:939:11 | * ... | provenance | | nodes | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | semmle.label | [summary param] *0 in buffer | | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | semmle.label | [summary] to write: ReturnValue in buffer | @@ -636,6 +656,26 @@ nodes | windows.cpp:731:10:731:36 | * ... | semmle.label | * ... | | windows.cpp:733:10:733:35 | * ... | semmle.label | * ... | | windows.cpp:735:10:735:37 | * ... | semmle.label | * ... | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | semmle.label | HttpReceiveHttpRequest output argument | +| windows.cpp:901:15:901:53 | *& ... | semmle.label | *& ... | +| windows.cpp:903:10:903:11 | * ... | semmle.label | * ... | +| windows.cpp:905:10:905:31 | * ... | semmle.label | * ... | +| windows.cpp:907:10:907:42 | * ... | semmle.label | * ... | +| windows.cpp:909:10:909:57 | * ... | semmle.label | * ... | +| windows.cpp:911:10:911:60 | * ... | semmle.label | * ... | +| windows.cpp:912:54:912:63 | FileHandle | semmle.label | FileHandle | +| windows.cpp:914:10:914:70 | * ... | semmle.label | * ... | +| windows.cpp:916:10:916:72 | * ... | semmle.label | * ... | +| windows.cpp:918:10:918:64 | * ... | semmle.label | * ... | +| windows.cpp:920:10:920:51 | * ... | semmle.label | * ... | +| windows.cpp:922:10:922:52 | * ... | semmle.label | * ... | +| windows.cpp:924:10:924:63 | * ... | semmle.label | * ... | +| windows.cpp:929:70:929:75 | HttpReceiveRequestEntityBody output argument | semmle.label | HttpReceiveRequestEntityBody output argument | +| windows.cpp:931:10:931:16 | * ... | semmle.label | * ... | +| windows.cpp:936:70:936:78 | HttpReceiveClientCertificate output argument | semmle.label | HttpReceiveClientCertificate output argument | +| windows.cpp:937:15:937:48 | *& ... | semmle.label | *& ... | +| windows.cpp:939:10:939:11 | * ... | semmle.label | * ... | +| windows.cpp:941:10:941:31 | * ... | semmle.label | * ... | subpaths | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | asio_streams.cpp:100:44:100:62 | call to buffer | | azure.cpp:257:5:257:8 | *resp | azure.cpp:113:16:113:19 | [summary param] this in Read | azure.cpp:113:16:113:19 | [summary param] *0 in Read [Return] | azure.cpp:257:16:257:21 | Read output argument | 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 c683d8539a07..b46aa87af6fe 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -32,3 +32,6 @@ | windows.cpp:669:70:669:79 | WinHttpQueryHeadersEx output argument | remote | | windows.cpp:669:82:669:87 | WinHttpQueryHeadersEx output argument | remote | | windows.cpp:669:105:669:112 | WinHttpQueryHeadersEx output argument | remote | +| windows.cpp:900:64:900:77 | HttpReceiveHttpRequest output argument | remote | +| windows.cpp:929:70:929:75 | HttpReceiveRequestEntityBody output argument | remote | +| windows.cpp:936:70:936:78 | HttpReceiveClientCertificate output argument | remote | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.ql b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.ql index a162349b7cdf..63e6520c56f2 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.ql +++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.ql @@ -1,2 +1,2 @@ import cpp -import semmle.code.cpp.dataflow.ExternalFlow::CsvValidation +import semmle.code.cpp.dataflow.ExternalFlow::ModelValidation diff --git a/cpp/ql/test/library-tests/dataflow/external-models/windows.cpp b/cpp/ql/test/library-tests/dataflow/external-models/windows.cpp index 2900af9034c8..f098f7344e43 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/windows.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/windows.cpp @@ -734,4 +734,210 @@ void test_winhttp_crack_url() { sink(urlComponents.lpszExtraInfo); sink(*urlComponents.lpszExtraInfo); // $ ir } +} + +using HTTP_REQUEST_ID = ULONGLONG; +using HTTP_CONNECTION_ID = ULONGLONG; +using HTTP_URL_CONTEXT = ULONGLONG; +using HTTP_RAW_CONNECTION_ID = ULONGLONG; + +typedef struct _HTTP_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; +} HTTP_VERSION, *PHTTP_VERSION; + +typedef enum _HTTP_VERB { + HttpVerbUnparsed = 0 +} HTTP_VERB, *PHTTP_VERB; + +typedef struct _HTTP_COOKED_URL { + USHORT FullUrlLength; + USHORT HostLength; + USHORT AbsPathLength; + USHORT QueryStringLength; + PCWSTR pFullUrl; + PCWSTR pHost; + PCWSTR pAbsPath; + PCWSTR pQueryString; +} HTTP_COOKED_URL, *PHTTP_COOKED_URL; + +typedef struct _HTTP_TRANSPORT_ADDRESS { + struct sockaddr* pRemoteAddress; + struct sockaddr* pLocalAddress; +} HTTP_TRANSPORT_ADDRESS, *PHTTP_TRANSPORT_ADDRESS; + +typedef struct _HTTP_KNOWN_HEADER { + USHORT RawValueLength; + PCSTR pRawValue; +} HTTP_KNOWN_HEADER, *PHTTP_KNOWN_HEADER; + +typedef struct _HTTP_UNKNOWN_HEADER { + USHORT NameLength; + USHORT RawValueLength; + PCSTR pName; + PCSTR pRawValue; +} HTTP_UNKNOWN_HEADER, *PHTTP_UNKNOWN_HEADER; + +typedef struct _HTTP_REQUEST_HEADERS { + USHORT UnknownHeaderCount; + PHTTP_UNKNOWN_HEADER pUnknownHeaders; + USHORT TrailerCount; + PHTTP_UNKNOWN_HEADER pTrailers; + HTTP_KNOWN_HEADER KnownHeaders[41]; +} HTTP_REQUEST_HEADERS, *PHTTP_REQUEST_HEADERS; + +typedef struct _HTTP_BYTE_RANGE { + ULONGLONG StartingOffset; + ULONGLONG Length; +} HTTP_BYTE_RANGE, *PHTTP_BYTE_RANGE; + +typedef struct _HTTP_DATA_CHUNK { + int DataChunkType; + union { + struct { + PVOID pBuffer; + ULONG BufferLength; + } FromMemory; + struct { + HTTP_BYTE_RANGE ByteRange; + HANDLE FileHandle; + } FromFileHandle; + struct { + USHORT FragmentNameLength; + PCWSTR pFragmentName; + } FromFragmentCache; + struct { + HTTP_BYTE_RANGE ByteRange; + PCWSTR pFragmentName; + } FromFragmentCacheEx; + struct { + USHORT TrailerCount; + PHTTP_UNKNOWN_HEADER pTrailers; + } Trailers; + }; +} HTTP_DATA_CHUNK, *PHTTP_DATA_CHUNK; + +typedef struct _HTTP_SSL_CLIENT_CERT_INFO { + ULONG CertFlags; + ULONG CertEncodedSize; + char* pCertEncoded; + HANDLE Token; + BOOL CertDeniedByMapper; +} HTTP_SSL_CLIENT_CERT_INFO, *PHTTP_SSL_CLIENT_CERT_INFO; + +typedef struct _HTTP_SSL_INFO { + USHORT ServerCertKeySize; + USHORT ConnectionKeySize; + ULONG ServerCertIssuerSize; + ULONG ServerCertSubjectSize; + PCSTR pServerCertIssuer; + PCSTR pServerCertSubject; + PHTTP_SSL_CLIENT_CERT_INFO pClientCertInfo; + ULONG SslClientCertNegotiated; +} HTTP_SSL_INFO, *PHTTP_SSL_INFO; + +typedef struct _HTTP_REQUEST_V1 { + ULONG Flags; + HTTP_CONNECTION_ID ConnectionId; + HTTP_REQUEST_ID RequestId; + HTTP_URL_CONTEXT UrlContext; + HTTP_VERSION Version; + HTTP_VERB Verb; + USHORT UnknownVerbLength; + USHORT RawUrlLength; + PCSTR pUnknownVerb; + PCSTR pRawUrl; + HTTP_COOKED_URL CookedUrl; + HTTP_TRANSPORT_ADDRESS Address; + HTTP_REQUEST_HEADERS Headers; + ULONGLONG BytesReceived; + USHORT EntityChunkCount; + PHTTP_DATA_CHUNK pEntityChunks; + HTTP_RAW_CONNECTION_ID RawConnectionId; + PHTTP_SSL_INFO pSslInfo; +} HTTP_REQUEST_V1, *PHTTP_REQUEST_V1; + +using HTTP_REQUEST = HTTP_REQUEST_V1; +using PHTTP_REQUEST = PHTTP_REQUEST_V1; + +ULONG HttpReceiveHttpRequest( + HANDLE RequestQueueHandle, + HTTP_REQUEST_ID RequestId, + ULONG Flags, + PHTTP_REQUEST RequestBuffer, + ULONG RequestBufferLength, + PULONG BytesReturned, + LPOVERLAPPED Overlapped +); + +ULONG HttpReceiveRequestEntityBody( + HANDLE RequestQueueHandle, + HTTP_REQUEST_ID RequestId, + ULONG Flags, + PVOID EntityBuffer, + ULONG EntityBufferLength, + PULONG BytesReturned, + LPOVERLAPPED Overlapped +); + +ULONG HttpReceiveClientCertificate( + HANDLE RequestQueueHandle, + HTTP_CONNECTION_ID ConnectionId, + ULONG Flags, + PHTTP_SSL_CLIENT_CERT_INFO SslClientCertInfo, + ULONG SslClientCertInfoSize, + PULONG BytesReceived, + LPOVERLAPPED Overlapped +); + +void sink(PCWSTR); +void sink(HANDLE); + +void test_http_server_api(HANDLE hRequestQueue) { + { + HTTP_REQUEST requestBuffer; + ULONG bytesReturned; + ULONG result = HttpReceiveHttpRequest(hRequestQueue, 0, 0, &requestBuffer, sizeof(requestBuffer), &bytesReturned, nullptr); + char* p = reinterpret_cast(&requestBuffer); + sink(p); + sink(*p); // $ ir + sink(requestBuffer.pRawUrl); + sink(*requestBuffer.pRawUrl); // $ ir + sink(requestBuffer.CookedUrl.pFullUrl); + sink(*requestBuffer.CookedUrl.pFullUrl); // $ ir + sink(requestBuffer.Headers.KnownHeaders[0].pRawValue); + sink(*requestBuffer.Headers.KnownHeaders[0].pRawValue); // $ ir + sink(requestBuffer.Headers.pUnknownHeaders[0].pRawValue); + sink(*requestBuffer.Headers.pUnknownHeaders[0].pRawValue); // $ ir + sink(requestBuffer.pEntityChunks->FromFileHandle.FileHandle); // $ ir + sink(requestBuffer.pEntityChunks->FromFragmentCache.pFragmentName); + sink(*requestBuffer.pEntityChunks->FromFragmentCache.pFragmentName); // $ ir + sink(requestBuffer.pEntityChunks->FromFragmentCacheEx.pFragmentName); + sink(*requestBuffer.pEntityChunks->FromFragmentCacheEx.pFragmentName); // $ ir + sink(requestBuffer.pEntityChunks->FromMemory.pBuffer); + sink(*(char*)requestBuffer.pEntityChunks->FromMemory.pBuffer); // $ ir + sink(requestBuffer.pSslInfo->pServerCertIssuer); + sink(*requestBuffer.pSslInfo->pServerCertIssuer); // $ ir + sink(requestBuffer.pSslInfo->pServerCertSubject); + sink(*requestBuffer.pSslInfo->pServerCertSubject); // $ ir + sink(requestBuffer.pSslInfo->pClientCertInfo->pCertEncoded); + sink(*requestBuffer.pSslInfo->pClientCertInfo->pCertEncoded); // $ ir + } + { + char buffer[1024]; + ULONG bytesReturned; + ULONG result = HttpReceiveRequestEntityBody(hRequestQueue, 0, 0, buffer, sizeof(buffer), &bytesReturned, nullptr); + sink(buffer); + sink(*buffer); // $ ir + } + { + HTTP_SSL_CLIENT_CERT_INFO certInfo; + ULONG bytesReceived; + ULONG result = HttpReceiveClientCertificate(hRequestQueue, 0, 0, &certInfo, sizeof(certInfo), &bytesReceived, nullptr); + char* p = reinterpret_cast(&certInfo); + sink(p); + sink(*p); // $ ir + sink(certInfo.pCertEncoded); + sink(*certInfo.pCertEncoded); // $ ir + } } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/fields/C.cpp b/cpp/ql/test/library-tests/dataflow/fields/C.cpp index 6e5165caa9a1..0c0929282729 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/C.cpp +++ b/cpp/ql/test/library-tests/dataflow/fields/C.cpp @@ -27,7 +27,7 @@ class C void func() { sink(s1); // $ ast,ir - sink(s2); // $ MISSING: ast,ir + sink(s2); // $ ir MISSING: ast sink(s3); // $ ast,ir sink(s4); // $ MISSING: ast,ir } diff --git a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected index cc8cd2826bf3..2e38382150f4 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected @@ -187,23 +187,34 @@ edges | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | B.cpp:44:5:44:8 | *this [Return] [*box1, elem2] | provenance | | | B.cpp:46:7:46:21 | *... = ... [elem1] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | provenance | | | B.cpp:46:7:46:21 | *... = ... [elem2] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | provenance | | +| C.cpp:10:15:10:16 | *s2 [post update] [s2] | C.cpp:10:15:10:16 | *this [Return] [s2] | provenance | | +| C.cpp:10:15:10:16 | *this [Return] [s2] | C.cpp:22:3:22:3 | s2 output argument [s2] | provenance | | +| C.cpp:10:20:10:29 | new | C.cpp:10:15:10:16 | *s2 [post update] [s2] | provenance | | +| C.cpp:10:20:10:29 | new | C.cpp:10:20:10:29 | new | provenance | | | C.cpp:18:12:18:18 | *new [s1] | C.cpp:19:5:19:5 | *c [s1] | provenance | | +| C.cpp:18:12:18:18 | *new [s2] | C.cpp:19:5:19:5 | *c [s2] | provenance | | | C.cpp:18:12:18:18 | *new [s3] | C.cpp:19:5:19:5 | *c [s3] | provenance | | | C.cpp:18:12:18:18 | call to C [s1] | C.cpp:18:12:18:18 | *new [s1] | provenance | | +| C.cpp:18:12:18:18 | call to C [s2] | C.cpp:18:12:18:18 | *new [s2] | provenance | | | C.cpp:18:12:18:18 | call to C [s3] | C.cpp:18:12:18:18 | *new [s3] | provenance | | | C.cpp:19:5:19:5 | *c [s1] | C.cpp:27:8:27:11 | *this [s1] | provenance | | +| C.cpp:19:5:19:5 | *c [s2] | C.cpp:27:8:27:11 | *this [s2] | provenance | | | C.cpp:19:5:19:5 | *c [s3] | C.cpp:27:8:27:11 | *this [s3] | provenance | | | C.cpp:22:3:22:3 | *C [post update] [s1] | C.cpp:22:3:22:3 | *this [Return] [s1] | provenance | | | C.cpp:22:3:22:3 | *this [Return] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | | +| C.cpp:22:3:22:3 | *this [Return] [s2] | C.cpp:18:12:18:18 | call to C [s2] | provenance | | | C.cpp:22:3:22:3 | *this [Return] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | | +| C.cpp:22:3:22:3 | s2 output argument [s2] | C.cpp:22:3:22:3 | *this [Return] [s2] | provenance | | | C.cpp:22:12:22:21 | new | C.cpp:22:3:22:3 | *C [post update] [s1] | provenance | | | C.cpp:22:12:22:21 | new | C.cpp:22:12:22:21 | new | provenance | | | C.cpp:24:5:24:8 | *this [post update] [s3] | C.cpp:22:3:22:3 | *this [Return] [s3] | provenance | | | C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | *this [post update] [s3] | provenance | | | C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | provenance | | | C.cpp:27:8:27:11 | *this [s1] | C.cpp:29:10:29:11 | *this [s1] | provenance | | +| C.cpp:27:8:27:11 | *this [s2] | C.cpp:30:10:30:11 | *this [s2] | provenance | | | C.cpp:27:8:27:11 | *this [s3] | C.cpp:31:10:31:11 | *this [s3] | provenance | | | C.cpp:29:10:29:11 | *this [s1] | C.cpp:29:10:29:11 | s1 | provenance | | +| C.cpp:30:10:30:11 | *this [s2] | C.cpp:30:10:30:11 | s2 | provenance | | | C.cpp:31:10:31:11 | *this [s3] | C.cpp:31:10:31:11 | s3 | provenance | | | D.cpp:10:11:10:17 | *this [elem] | D.cpp:10:30:10:33 | *this [elem] | provenance | | | D.cpp:10:30:10:33 | *this [elem] | D.cpp:10:30:10:33 | elem | provenance | | @@ -1116,24 +1127,36 @@ nodes | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | semmle.label | *this [post update] [*box1, elem2] | | B.cpp:46:7:46:21 | *... = ... [elem1] | semmle.label | *... = ... [elem1] | | B.cpp:46:7:46:21 | *... = ... [elem2] | semmle.label | *... = ... [elem2] | +| C.cpp:10:15:10:16 | *s2 [post update] [s2] | semmle.label | *s2 [post update] [s2] | +| C.cpp:10:15:10:16 | *this [Return] [s2] | semmle.label | *this [Return] [s2] | +| C.cpp:10:20:10:29 | new | semmle.label | new | +| C.cpp:10:20:10:29 | new | semmle.label | new | | C.cpp:18:12:18:18 | *new [s1] | semmle.label | *new [s1] | +| C.cpp:18:12:18:18 | *new [s2] | semmle.label | *new [s2] | | C.cpp:18:12:18:18 | *new [s3] | semmle.label | *new [s3] | | C.cpp:18:12:18:18 | call to C [s1] | semmle.label | call to C [s1] | +| C.cpp:18:12:18:18 | call to C [s2] | semmle.label | call to C [s2] | | C.cpp:18:12:18:18 | call to C [s3] | semmle.label | call to C [s3] | | C.cpp:19:5:19:5 | *c [s1] | semmle.label | *c [s1] | +| C.cpp:19:5:19:5 | *c [s2] | semmle.label | *c [s2] | | C.cpp:19:5:19:5 | *c [s3] | semmle.label | *c [s3] | | C.cpp:22:3:22:3 | *C [post update] [s1] | semmle.label | *C [post update] [s1] | | C.cpp:22:3:22:3 | *this [Return] [s1] | semmle.label | *this [Return] [s1] | +| C.cpp:22:3:22:3 | *this [Return] [s2] | semmle.label | *this [Return] [s2] | | C.cpp:22:3:22:3 | *this [Return] [s3] | semmle.label | *this [Return] [s3] | +| C.cpp:22:3:22:3 | s2 output argument [s2] | semmle.label | s2 output argument [s2] | | C.cpp:22:12:22:21 | new | semmle.label | new | | C.cpp:22:12:22:21 | new | semmle.label | new | | C.cpp:24:5:24:8 | *this [post update] [s3] | semmle.label | *this [post update] [s3] | | C.cpp:24:5:24:25 | ... = ... | semmle.label | ... = ... | | C.cpp:24:16:24:25 | new | semmle.label | new | | C.cpp:27:8:27:11 | *this [s1] | semmle.label | *this [s1] | +| C.cpp:27:8:27:11 | *this [s2] | semmle.label | *this [s2] | | C.cpp:27:8:27:11 | *this [s3] | semmle.label | *this [s3] | | C.cpp:29:10:29:11 | *this [s1] | semmle.label | *this [s1] | | C.cpp:29:10:29:11 | s1 | semmle.label | s1 | +| C.cpp:30:10:30:11 | *this [s2] | semmle.label | *this [s2] | +| C.cpp:30:10:30:11 | s2 | semmle.label | s2 | | C.cpp:31:10:31:11 | *this [s3] | semmle.label | *this [s3] | | C.cpp:31:10:31:11 | s3 | semmle.label | s3 | | D.cpp:10:11:10:17 | *getElem | semmle.label | *getElem | @@ -1958,6 +1981,7 @@ subpaths | B.cpp:9:10:9:24 | elem1 | B.cpp:6:15:6:24 | new | B.cpp:9:10:9:24 | elem1 | elem1 flows from $@ | B.cpp:6:15:6:24 | new | new | | B.cpp:19:10:19:24 | elem2 | B.cpp:15:15:15:27 | new | B.cpp:19:10:19:24 | elem2 | elem2 flows from $@ | B.cpp:15:15:15:27 | new | new | | C.cpp:29:10:29:11 | s1 | C.cpp:22:12:22:21 | new | C.cpp:29:10:29:11 | s1 | s1 flows from $@ | C.cpp:22:12:22:21 | new | new | +| C.cpp:30:10:30:11 | s2 | C.cpp:10:20:10:29 | new | C.cpp:30:10:30:11 | s2 | s2 flows from $@ | C.cpp:10:20:10:29 | new | new | | C.cpp:31:10:31:11 | s3 | C.cpp:24:16:24:25 | new | C.cpp:31:10:31:11 | s3 | s3 flows from $@ | C.cpp:24:16:24:25 | new | new | | D.cpp:22:10:22:33 | call to getElem | D.cpp:28:15:28:24 | new | D.cpp:22:10:22:33 | call to getElem | call to getElem flows from $@ | D.cpp:28:15:28:24 | new | new | | D.cpp:22:10:22:33 | call to getElem | D.cpp:35:15:35:24 | new | D.cpp:22:10:22:33 | call to getElem | call to getElem flows from $@ | D.cpp:35:15:35:24 | new | new | diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.ql b/cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.ql deleted file mode 100644 index 7b551515b460..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.ql +++ /dev/null @@ -1,20 +0,0 @@ -import testModels -private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate -private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil -private import semmle.code.cpp.ir.dataflow.internal.DataFlowNodes - -string describe(DataFlow::Node n) { - n instanceof ParameterNode and result = "ParameterNode" - or - n instanceof PostUpdateNode and result = "PostUpdateNode" - or - n instanceof ArgumentNode and result = "ArgumentNode" - or - n instanceof ReturnNode and result = "ReturnNode" - or - n instanceof OutNode and result = "OutNode" -} - -from FlowSummaryNode n -select n, concat(describe(n), ", "), concat(n.getSummarizedCallable().toString(), ", "), - concat(n.getEnclosingCallable().toString(), ", ") diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/SummaryCall.expected b/cpp/ql/test/library-tests/dataflow/models-as-data/SummaryCall.expected deleted file mode 100644 index 54bd0ca489a4..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/SummaryCall.expected +++ /dev/null @@ -1,267 +0,0 @@ -summaryCalls -| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturn in madCallArg0ReturnToReturn | -| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturnFirst in madCallArg0ReturnToReturnFirst | -| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0WithValue in madCallArg0WithValue | -summarizedCallables -| tests.cpp:144:5:144:19 | madArg0ToReturn | -| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect | -| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow | -| tests.cpp:148:5:148:27 | madArg0IndirectToReturn | -| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn | -| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn | -| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect | -| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect | -| tests.cpp:153:5:153:18 | madArgsComplex | -| tests.cpp:154:5:154:14 | madArgsAny | -| tests.cpp:155:5:155:28 | madAndImplementedComplex | -| tests.cpp:160:5:160:24 | madArg0FieldToReturn | -| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn | -| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn | -| tests.cpp:163:13:163:32 | madArg0ToReturnField | -| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField | -| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect | -| tests.cpp:284:7:284:19 | madArg0ToSelf | -| tests.cpp:285:6:285:20 | madSelfToReturn | -| tests.cpp:287:7:287:20 | madArg0ToField | -| tests.cpp:288:6:288:21 | madFieldToReturn | -| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn | -| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn | -| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst | -| tests.cpp:436:6:436:25 | madCallArg0WithValue | -| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction | -| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | -| tests.cpp:471:5:471:17 | receive_array | -sourceCallables -| tests.cpp:3:5:3:10 | source | -| tests.cpp:4:6:4:14 | sourcePtr | -| tests.cpp:5:6:5:19 | sourceIndirect | -| tests.cpp:6:6:6:9 | sink | -| tests.cpp:6:15:6:17 | val | -| tests.cpp:7:6:7:9 | sink | -| tests.cpp:7:16:7:18 | ptr | -| tests.cpp:11:5:11:18 | localMadSource | -| tests.cpp:12:5:12:19 | remoteMadSource | -| tests.cpp:13:5:13:14 | notASource | -| tests.cpp:14:5:14:22 | localMadSourceVoid | -| tests.cpp:15:5:15:25 | localMadSourceHasBody | -| tests.cpp:16:6:16:28 | remoteMadSourceIndirect | -| tests.cpp:17:7:17:35 | remoteMadSourceDoubleIndirect | -| tests.cpp:18:6:18:32 | remoteMadSourceIndirectArg0 | -| tests.cpp:18:39:18:39 | x | -| tests.cpp:18:47:18:47 | y | -| tests.cpp:19:6:19:32 | remoteMadSourceIndirectArg1 | -| tests.cpp:19:39:19:39 | x | -| tests.cpp:19:47:19:47 | y | -| tests.cpp:20:5:20:22 | remoteMadSourceVar | -| tests.cpp:21:6:21:31 | remoteMadSourceVarIndirect | -| tests.cpp:24:6:24:28 | namespaceLocalMadSource | -| tests.cpp:25:6:25:31 | namespaceLocalMadSourceVar | -| tests.cpp:28:7:28:30 | namespace2LocalMadSource | -| tests.cpp:31:6:31:19 | localMadSource | -| tests.cpp:33:5:33:27 | namespaceLocalMadSource | -| tests.cpp:35:6:35:17 | test_sources | -| tests.cpp:50:6:50:6 | v | -| tests.cpp:51:7:51:16 | v_indirect | -| tests.cpp:52:6:52:13 | v_direct | -| tests.cpp:63:6:63:6 | a | -| tests.cpp:63:9:63:9 | b | -| tests.cpp:63:12:63:12 | c | -| tests.cpp:63:15:63:15 | d | -| tests.cpp:75:6:75:6 | e | -| tests.cpp:85:6:85:26 | remoteMadSourceParam0 | -| tests.cpp:85:32:85:32 | x | -| tests.cpp:92:6:92:16 | madSinkArg0 | -| tests.cpp:92:22:92:22 | x | -| tests.cpp:93:6:93:13 | notASink | -| tests.cpp:93:19:93:19 | x | -| tests.cpp:94:6:94:16 | madSinkArg1 | -| tests.cpp:94:22:94:22 | x | -| tests.cpp:94:29:94:29 | y | -| tests.cpp:95:6:95:17 | madSinkArg01 | -| tests.cpp:95:23:95:23 | x | -| tests.cpp:95:30:95:30 | y | -| tests.cpp:95:37:95:37 | z | -| tests.cpp:96:6:96:17 | madSinkArg02 | -| tests.cpp:96:23:96:23 | x | -| tests.cpp:96:30:96:30 | y | -| tests.cpp:96:37:96:37 | z | -| tests.cpp:97:6:97:24 | madSinkIndirectArg0 | -| tests.cpp:97:31:97:31 | x | -| tests.cpp:98:6:98:30 | madSinkDoubleIndirectArg0 | -| tests.cpp:98:38:98:38 | x | -| tests.cpp:99:5:99:14 | madSinkVar | -| tests.cpp:100:6:100:23 | madSinkVarIndirect | -| tests.cpp:102:6:102:15 | test_sinks | -| tests.cpp:116:6:116:6 | a | -| tests.cpp:117:7:117:11 | a_ptr | -| tests.cpp:132:6:132:18 | madSinkParam0 | -| tests.cpp:132:24:132:24 | x | -| tests.cpp:138:8:138:8 | operator= | -| tests.cpp:138:8:138:8 | operator= | -| tests.cpp:138:8:138:18 | MyContainer | -| tests.cpp:139:6:139:10 | value | -| tests.cpp:140:6:140:11 | value2 | -| tests.cpp:141:7:141:9 | ptr | -| tests.cpp:144:5:144:19 | madArg0ToReturn | -| tests.cpp:144:25:144:25 | x | -| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect | -| tests.cpp:145:34:145:34 | x | -| tests.cpp:146:5:146:15 | notASummary | -| tests.cpp:146:21:146:21 | x | -| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow | -| tests.cpp:147:34:147:34 | x | -| tests.cpp:148:5:148:27 | madArg0IndirectToReturn | -| tests.cpp:148:34:148:34 | x | -| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn | -| tests.cpp:149:41:149:41 | x | -| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn | -| tests.cpp:150:37:150:37 | x | -| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect | -| tests.cpp:151:32:151:32 | x | -| tests.cpp:151:40:151:40 | y | -| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect | -| tests.cpp:152:47:152:47 | x | -| tests.cpp:152:55:152:55 | y | -| tests.cpp:153:5:153:18 | madArgsComplex | -| tests.cpp:153:25:153:25 | a | -| tests.cpp:153:33:153:33 | b | -| tests.cpp:153:40:153:40 | c | -| tests.cpp:153:47:153:47 | d | -| tests.cpp:154:5:154:14 | madArgsAny | -| tests.cpp:154:20:154:20 | a | -| tests.cpp:154:28:154:28 | b | -| tests.cpp:155:5:155:28 | madAndImplementedComplex | -| tests.cpp:155:34:155:34 | a | -| tests.cpp:155:41:155:41 | b | -| tests.cpp:155:48:155:48 | c | -| tests.cpp:160:5:160:24 | madArg0FieldToReturn | -| tests.cpp:160:38:160:39 | mc | -| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn | -| tests.cpp:161:47:161:48 | mc | -| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn | -| tests.cpp:162:46:162:47 | mc | -| tests.cpp:163:13:163:32 | madArg0ToReturnField | -| tests.cpp:163:38:163:38 | x | -| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField | -| tests.cpp:164:47:164:47 | x | -| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect | -| tests.cpp:165:46:165:46 | x | -| tests.cpp:167:13:167:30 | madFieldToFieldVar | -| tests.cpp:168:13:168:38 | madFieldToIndirectFieldVar | -| tests.cpp:169:14:169:39 | madIndirectFieldToFieldVar | -| tests.cpp:171:6:171:19 | test_summaries | -| tests.cpp:174:6:174:6 | a | -| tests.cpp:174:9:174:9 | b | -| tests.cpp:174:12:174:12 | c | -| tests.cpp:174:15:174:15 | d | -| tests.cpp:174:18:174:18 | e | -| tests.cpp:175:7:175:11 | a_ptr | -| tests.cpp:218:14:218:16 | mc1 | -| tests.cpp:218:19:218:21 | mc2 | -| tests.cpp:237:15:237:18 | rtn1 | -| tests.cpp:240:14:240:17 | rtn2 | -| tests.cpp:241:7:241:14 | rtn2_ptr | -| tests.cpp:267:7:267:7 | operator= | -| tests.cpp:267:7:267:7 | operator= | -| tests.cpp:267:7:267:13 | MyClass | -| tests.cpp:270:6:270:26 | memberRemoteMadSource | -| tests.cpp:271:7:271:39 | memberRemoteMadSourceIndirectArg0 | -| tests.cpp:271:46:271:46 | x | -| tests.cpp:272:6:272:29 | memberRemoteMadSourceVar | -| tests.cpp:273:7:273:21 | qualifierSource | -| tests.cpp:274:7:274:26 | qualifierFieldSource | -| tests.cpp:277:7:277:23 | memberMadSinkArg0 | -| tests.cpp:277:29:277:29 | x | -| tests.cpp:278:6:278:21 | memberMadSinkVar | -| tests.cpp:279:7:279:19 | qualifierSink | -| tests.cpp:280:7:280:23 | qualifierArg0Sink | -| tests.cpp:280:29:280:29 | x | -| tests.cpp:281:7:281:24 | qualifierFieldSink | -| tests.cpp:284:7:284:19 | madArg0ToSelf | -| tests.cpp:284:25:284:25 | x | -| tests.cpp:285:6:285:20 | madSelfToReturn | -| tests.cpp:286:6:286:16 | notASummary | -| tests.cpp:287:7:287:20 | madArg0ToField | -| tests.cpp:287:26:287:26 | x | -| tests.cpp:288:6:288:21 | madFieldToReturn | -| tests.cpp:290:6:290:8 | val | -| tests.cpp:293:7:293:7 | MyDerivedClass | -| tests.cpp:293:7:293:7 | operator= | -| tests.cpp:293:7:293:7 | operator= | -| tests.cpp:293:7:293:20 | MyDerivedClass | -| tests.cpp:295:6:295:28 | subtypeRemoteMadSource1 | -| tests.cpp:296:6:296:21 | subtypeNonSource | -| tests.cpp:297:6:297:28 | subtypeRemoteMadSource2 | -| tests.cpp:300:9:300:15 | source2 | -| tests.cpp:301:6:301:9 | sink | -| tests.cpp:301:19:301:20 | mc | -| tests.cpp:304:8:304:8 | operator= | -| tests.cpp:304:8:304:8 | operator= | -| tests.cpp:304:8:304:14 | MyClass | -| tests.cpp:307:8:307:33 | namespaceMemberMadSinkArg0 | -| tests.cpp:307:39:307:39 | x | -| tests.cpp:308:15:308:46 | namespaceStaticMemberMadSinkArg0 | -| tests.cpp:308:52:308:52 | x | -| tests.cpp:309:7:309:31 | namespaceMemberMadSinkVar | -| tests.cpp:310:14:310:44 | namespaceStaticMemberMadSinkVar | -| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn | -| tests.cpp:317:22:317:28 | source3 | -| tests.cpp:319:6:319:23 | test_class_members | -| tests.cpp:320:10:320:11 | mc | -| tests.cpp:320:14:320:16 | mc2 | -| tests.cpp:320:19:320:21 | mc3 | -| tests.cpp:320:24:320:26 | mc4 | -| tests.cpp:320:29:320:31 | mc5 | -| tests.cpp:320:34:320:36 | mc6 | -| tests.cpp:320:39:320:41 | mc7 | -| tests.cpp:320:44:320:46 | mc8 | -| tests.cpp:320:49:320:51 | mc9 | -| tests.cpp:320:54:320:57 | mc10 | -| tests.cpp:320:60:320:63 | mc11 | -| tests.cpp:321:11:321:13 | ptr | -| tests.cpp:321:17:321:23 | mc4_ptr | -| tests.cpp:322:17:322:19 | mdc | -| tests.cpp:323:23:323:25 | mnc | -| tests.cpp:323:28:323:31 | mnc2 | -| tests.cpp:324:24:324:31 | mnc2_ptr | -| tests.cpp:330:6:330:6 | a | -| tests.cpp:429:8:429:8 | operator= | -| tests.cpp:429:8:429:8 | operator= | -| tests.cpp:429:8:429:14 | intPair | -| tests.cpp:430:6:430:10 | first | -| tests.cpp:431:6:431:11 | second | -| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn | -| tests.cpp:434:37:434:43 | fun_ptr | -| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:46:435:52 | fun_ptr | -| tests.cpp:436:6:436:25 | madCallArg0WithValue | -| tests.cpp:436:34:436:40 | fun_ptr | -| tests.cpp:436:53:436:57 | value | -| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction | -| tests.cpp:437:45:437:51 | fun_ptr | -| tests.cpp:437:64:437:68 | value | -| tests.cpp:439:5:439:14 | getTainted | -| tests.cpp:440:6:440:13 | useValue | -| tests.cpp:440:19:440:19 | x | -| tests.cpp:441:6:441:17 | dontUseValue | -| tests.cpp:441:23:441:23 | x | -| tests.cpp:443:6:443:27 | test_function_pointers | -| tests.cpp:456:19:456:19 | X | -| tests.cpp:457:8:457:35 | StructWithTypedefInParameter | -| tests.cpp:457:8:457:35 | StructWithTypedefInParameter | -| tests.cpp:458:12:458:15 | Type | -| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | -| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | -| tests.cpp:459:45:459:45 | x | -| tests.cpp:459:45:459:45 | x | -| tests.cpp:462:6:462:37 | test_parameter_ref_to_return_ref | -| tests.cpp:463:6:463:6 | x | -| tests.cpp:464:36:464:36 | s | -| tests.cpp:465:6:465:6 | y | -| tests.cpp:469:7:469:9 | INT | -| tests.cpp:471:5:471:17 | receive_array | -| tests.cpp:471:23:471:23 | a | -| tests.cpp:473:6:473:23 | test_receive_array | -| tests.cpp:474:6:474:6 | x | -| tests.cpp:475:6:475:10 | array | -| tests.cpp:476:6:476:6 | y | diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/SummaryCall.ql b/cpp/ql/test/library-tests/dataflow/models-as-data/SummaryCall.ql deleted file mode 100644 index 1b569040028e..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/SummaryCall.ql +++ /dev/null @@ -1,9 +0,0 @@ -import testModels -private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate -private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil - -query predicate summaryCalls(SummaryCall c) { any() } - -query predicate summarizedCallables(SummarizedCallable c) { any() } - -query predicate sourceCallables(SourceCallable c) { c.getLocation().getFile().toString() != "" } diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/consistency.expected b/cpp/ql/test/library-tests/dataflow/models-as-data/consistency.expected deleted file mode 100644 index c89f4455bc59..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/consistency.expected +++ /dev/null @@ -1,29 +0,0 @@ -uniqueEnclosingCallable -uniqueCallEnclosingCallable -uniqueType -uniqueNodeLocation -missingLocation -uniqueNodeToString -parameterCallable -localFlowIsLocal -readStepIsLocal -storeStepIsLocal -compatibleTypesReflexive -unreachableNodeCCtx -localCallNodes -postIsNotPre -postHasUniquePre -uniquePostUpdate -postIsInSameCallable -reverseRead -argHasPostUpdate -postWithInFlow -viableImplInCallContextTooLarge -uniqueParameterNodeAtPosition -uniqueParameterNodePosition -uniqueContentApprox -identityLocalStep -missingArgumentCall -multipleArgumentCall -lambdaCallEnclosingCallableMismatch -speculativeStepAlreadyHasModel diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/consistency.ql b/cpp/ql/test/library-tests/dataflow/models-as-data/consistency.ql deleted file mode 100644 index 1af8d69a3563..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/consistency.ql +++ /dev/null @@ -1,2 +0,0 @@ -import testModels -import semmle.code.cpp.ir.dataflow.internal.DataFlowImplConsistency::Consistency diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/interpretElement.ql b/cpp/ql/test/library-tests/dataflow/models-as-data/interpretElement.ql deleted file mode 100644 index ccf0c3f886dc..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/interpretElement.ql +++ /dev/null @@ -1,18 +0,0 @@ -import utils.test.InlineExpectationsTest -import testModels - -module InterpretElementTest implements TestSig { - string getARelevantTag() { result = "interpretElement" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - exists(Element e | - e = interpretElement(_, _, _, _, _, _) and - location = e.getLocation() and - element = e.toString() and - tag = "interpretElement" and - value = "" - ) - } -} - -import MakeTest diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/taint.ql b/cpp/ql/test/library-tests/dataflow/models-as-data/taint.ql deleted file mode 100644 index 8c362d78e3e7..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/taint.ql +++ /dev/null @@ -1,32 +0,0 @@ -import utils.test.dataflow.FlowTestCommon -import testModels - -module IRTest { - private import semmle.code.cpp.ir.IR - private import semmle.code.cpp.ir.dataflow.TaintTracking - - /** Common data flow configuration to be used by tests. */ - module TestAllocationConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source instanceof FlowSource - or - source.asExpr().(FunctionCall).getTarget().getName() = - ["source", "source2", "source3", "sourcePtr"] - or - source.asIndirectExpr(1).(FunctionCall).getTarget().getName() = "sourceIndirect" - } - - predicate isSink(DataFlow::Node sink) { - sinkNode(sink, "test-sink") - or - exists(FunctionCall call | - call.getTarget().getName() = "sink" and - sink.asExpr() = call.getAnArgument() - ) - } - } - - module IRFlow = TaintTracking::Global; -} - -import MakeTest> diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.expected b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected similarity index 50% rename from cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.expected rename to cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected index 756e9a7e22a5..0faf016ee410 100644 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.expected +++ b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected @@ -1,3 +1,301 @@ +uniqueEnclosingCallable +uniqueCallEnclosingCallable +uniqueType +uniqueNodeLocation +missingLocation +uniqueNodeToString +parameterCallable +localFlowIsLocal +readStepIsLocal +storeStepIsLocal +compatibleTypesReflexive +unreachableNodeCCtx +localCallNodes +postIsNotPre +postHasUniquePre +uniquePostUpdate +postIsInSameCallable +reverseRead +argHasPostUpdate +postWithInFlow +viableImplInCallContextTooLarge +uniqueParameterNodeAtPosition +uniqueParameterNodePosition +uniqueContentApprox +identityLocalStep +missingArgumentCall +multipleArgumentCall +lambdaCallEnclosingCallableMismatch +speculativeStepAlreadyHasModel +testFailures +summaryCalls +| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturn in madCallArg0ReturnToReturn | +| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturnFirst in madCallArg0ReturnToReturnFirst | +| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0WithValue in madCallArg0WithValue | +summarizedCallables +| tests.cpp:144:5:144:19 | madArg0ToReturn | +| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect | +| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow | +| tests.cpp:148:5:148:27 | madArg0IndirectToReturn | +| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn | +| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn | +| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect | +| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect | +| tests.cpp:153:5:153:18 | madArgsComplex | +| tests.cpp:154:5:154:14 | madArgsAny | +| tests.cpp:155:5:155:28 | madAndImplementedComplex | +| tests.cpp:160:5:160:24 | madArg0FieldToReturn | +| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn | +| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn | +| tests.cpp:163:13:163:32 | madArg0ToReturnField | +| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField | +| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect | +| tests.cpp:284:7:284:19 | madArg0ToSelf | +| tests.cpp:285:6:285:20 | madSelfToReturn | +| tests.cpp:287:7:287:20 | madArg0ToField | +| tests.cpp:288:6:288:21 | madFieldToReturn | +| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn | +| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn | +| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst | +| tests.cpp:436:6:436:25 | madCallArg0WithValue | +| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction | +| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | +| tests.cpp:471:5:471:17 | receive_array | +sourceCallables +| tests.cpp:3:5:3:10 | source | +| tests.cpp:4:6:4:14 | sourcePtr | +| tests.cpp:5:6:5:19 | sourceIndirect | +| tests.cpp:6:6:6:9 | sink | +| tests.cpp:6:15:6:17 | val | +| tests.cpp:7:6:7:9 | sink | +| tests.cpp:7:16:7:18 | ptr | +| tests.cpp:11:5:11:18 | localMadSource | +| tests.cpp:12:5:12:19 | remoteMadSource | +| tests.cpp:13:5:13:14 | notASource | +| tests.cpp:14:5:14:22 | localMadSourceVoid | +| tests.cpp:15:5:15:25 | localMadSourceHasBody | +| tests.cpp:16:6:16:28 | remoteMadSourceIndirect | +| tests.cpp:17:7:17:35 | remoteMadSourceDoubleIndirect | +| tests.cpp:18:6:18:32 | remoteMadSourceIndirectArg0 | +| tests.cpp:18:39:18:39 | x | +| tests.cpp:18:47:18:47 | y | +| tests.cpp:19:6:19:32 | remoteMadSourceIndirectArg1 | +| tests.cpp:19:39:19:39 | x | +| tests.cpp:19:47:19:47 | y | +| tests.cpp:20:5:20:22 | remoteMadSourceVar | +| tests.cpp:21:6:21:31 | remoteMadSourceVarIndirect | +| tests.cpp:24:6:24:28 | namespaceLocalMadSource | +| tests.cpp:25:6:25:31 | namespaceLocalMadSourceVar | +| tests.cpp:28:7:28:30 | namespace2LocalMadSource | +| tests.cpp:31:6:31:19 | localMadSource | +| tests.cpp:33:5:33:27 | namespaceLocalMadSource | +| tests.cpp:35:6:35:17 | test_sources | +| tests.cpp:50:6:50:6 | v | +| tests.cpp:51:7:51:16 | v_indirect | +| tests.cpp:52:6:52:13 | v_direct | +| tests.cpp:63:6:63:6 | a | +| tests.cpp:63:9:63:9 | b | +| tests.cpp:63:12:63:12 | c | +| tests.cpp:63:15:63:15 | d | +| tests.cpp:75:6:75:6 | e | +| tests.cpp:85:6:85:26 | remoteMadSourceParam0 | +| tests.cpp:85:32:85:32 | x | +| tests.cpp:92:6:92:16 | madSinkArg0 | +| tests.cpp:92:22:92:22 | x | +| tests.cpp:93:6:93:13 | notASink | +| tests.cpp:93:19:93:19 | x | +| tests.cpp:94:6:94:16 | madSinkArg1 | +| tests.cpp:94:22:94:22 | x | +| tests.cpp:94:29:94:29 | y | +| tests.cpp:95:6:95:17 | madSinkArg01 | +| tests.cpp:95:23:95:23 | x | +| tests.cpp:95:30:95:30 | y | +| tests.cpp:95:37:95:37 | z | +| tests.cpp:96:6:96:17 | madSinkArg02 | +| tests.cpp:96:23:96:23 | x | +| tests.cpp:96:30:96:30 | y | +| tests.cpp:96:37:96:37 | z | +| tests.cpp:97:6:97:24 | madSinkIndirectArg0 | +| tests.cpp:97:31:97:31 | x | +| tests.cpp:98:6:98:30 | madSinkDoubleIndirectArg0 | +| tests.cpp:98:38:98:38 | x | +| tests.cpp:99:5:99:14 | madSinkVar | +| tests.cpp:100:6:100:23 | madSinkVarIndirect | +| tests.cpp:102:6:102:15 | test_sinks | +| tests.cpp:116:6:116:6 | a | +| tests.cpp:117:7:117:11 | a_ptr | +| tests.cpp:132:6:132:18 | madSinkParam0 | +| tests.cpp:132:24:132:24 | x | +| tests.cpp:138:8:138:8 | operator= | +| tests.cpp:138:8:138:8 | operator= | +| tests.cpp:138:8:138:18 | MyContainer | +| tests.cpp:139:6:139:10 | value | +| tests.cpp:140:6:140:11 | value2 | +| tests.cpp:141:7:141:9 | ptr | +| tests.cpp:144:5:144:19 | madArg0ToReturn | +| tests.cpp:144:25:144:25 | x | +| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect | +| tests.cpp:145:34:145:34 | x | +| tests.cpp:146:5:146:15 | notASummary | +| tests.cpp:146:21:146:21 | x | +| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow | +| tests.cpp:147:34:147:34 | x | +| tests.cpp:148:5:148:27 | madArg0IndirectToReturn | +| tests.cpp:148:34:148:34 | x | +| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn | +| tests.cpp:149:41:149:41 | x | +| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn | +| tests.cpp:150:37:150:37 | x | +| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect | +| tests.cpp:151:32:151:32 | x | +| tests.cpp:151:40:151:40 | y | +| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect | +| tests.cpp:152:47:152:47 | x | +| tests.cpp:152:55:152:55 | y | +| tests.cpp:153:5:153:18 | madArgsComplex | +| tests.cpp:153:25:153:25 | a | +| tests.cpp:153:33:153:33 | b | +| tests.cpp:153:40:153:40 | c | +| tests.cpp:153:47:153:47 | d | +| tests.cpp:154:5:154:14 | madArgsAny | +| tests.cpp:154:20:154:20 | a | +| tests.cpp:154:28:154:28 | b | +| tests.cpp:155:5:155:28 | madAndImplementedComplex | +| tests.cpp:155:34:155:34 | a | +| tests.cpp:155:41:155:41 | b | +| tests.cpp:155:48:155:48 | c | +| tests.cpp:160:5:160:24 | madArg0FieldToReturn | +| tests.cpp:160:38:160:39 | mc | +| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn | +| tests.cpp:161:47:161:48 | mc | +| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn | +| tests.cpp:162:46:162:47 | mc | +| tests.cpp:163:13:163:32 | madArg0ToReturnField | +| tests.cpp:163:38:163:38 | x | +| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField | +| tests.cpp:164:47:164:47 | x | +| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect | +| tests.cpp:165:46:165:46 | x | +| tests.cpp:167:13:167:30 | madFieldToFieldVar | +| tests.cpp:168:13:168:38 | madFieldToIndirectFieldVar | +| tests.cpp:169:14:169:39 | madIndirectFieldToFieldVar | +| tests.cpp:171:6:171:19 | test_summaries | +| tests.cpp:174:6:174:6 | a | +| tests.cpp:174:9:174:9 | b | +| tests.cpp:174:12:174:12 | c | +| tests.cpp:174:15:174:15 | d | +| tests.cpp:174:18:174:18 | e | +| tests.cpp:175:7:175:11 | a_ptr | +| tests.cpp:218:14:218:16 | mc1 | +| tests.cpp:218:19:218:21 | mc2 | +| tests.cpp:237:15:237:18 | rtn1 | +| tests.cpp:240:14:240:17 | rtn2 | +| tests.cpp:241:7:241:14 | rtn2_ptr | +| tests.cpp:267:7:267:7 | operator= | +| tests.cpp:267:7:267:7 | operator= | +| tests.cpp:267:7:267:13 | MyClass | +| tests.cpp:270:6:270:26 | memberRemoteMadSource | +| tests.cpp:271:7:271:39 | memberRemoteMadSourceIndirectArg0 | +| tests.cpp:271:46:271:46 | x | +| tests.cpp:272:6:272:29 | memberRemoteMadSourceVar | +| tests.cpp:273:7:273:21 | qualifierSource | +| tests.cpp:274:7:274:26 | qualifierFieldSource | +| tests.cpp:277:7:277:23 | memberMadSinkArg0 | +| tests.cpp:277:29:277:29 | x | +| tests.cpp:278:6:278:21 | memberMadSinkVar | +| tests.cpp:279:7:279:19 | qualifierSink | +| tests.cpp:280:7:280:23 | qualifierArg0Sink | +| tests.cpp:280:29:280:29 | x | +| tests.cpp:281:7:281:24 | qualifierFieldSink | +| tests.cpp:284:7:284:19 | madArg0ToSelf | +| tests.cpp:284:25:284:25 | x | +| tests.cpp:285:6:285:20 | madSelfToReturn | +| tests.cpp:286:6:286:16 | notASummary | +| tests.cpp:287:7:287:20 | madArg0ToField | +| tests.cpp:287:26:287:26 | x | +| tests.cpp:288:6:288:21 | madFieldToReturn | +| tests.cpp:290:6:290:8 | val | +| tests.cpp:293:7:293:7 | MyDerivedClass | +| tests.cpp:293:7:293:7 | operator= | +| tests.cpp:293:7:293:7 | operator= | +| tests.cpp:293:7:293:20 | MyDerivedClass | +| tests.cpp:295:6:295:28 | subtypeRemoteMadSource1 | +| tests.cpp:296:6:296:21 | subtypeNonSource | +| tests.cpp:297:6:297:28 | subtypeRemoteMadSource2 | +| tests.cpp:300:9:300:15 | source2 | +| tests.cpp:301:6:301:9 | sink | +| tests.cpp:301:19:301:20 | mc | +| tests.cpp:304:8:304:8 | operator= | +| tests.cpp:304:8:304:8 | operator= | +| tests.cpp:304:8:304:14 | MyClass | +| tests.cpp:307:8:307:33 | namespaceMemberMadSinkArg0 | +| tests.cpp:307:39:307:39 | x | +| tests.cpp:308:15:308:46 | namespaceStaticMemberMadSinkArg0 | +| tests.cpp:308:52:308:52 | x | +| tests.cpp:309:7:309:31 | namespaceMemberMadSinkVar | +| tests.cpp:310:14:310:44 | namespaceStaticMemberMadSinkVar | +| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn | +| tests.cpp:317:22:317:28 | source3 | +| tests.cpp:319:6:319:23 | test_class_members | +| tests.cpp:320:10:320:11 | mc | +| tests.cpp:320:14:320:16 | mc2 | +| tests.cpp:320:19:320:21 | mc3 | +| tests.cpp:320:24:320:26 | mc4 | +| tests.cpp:320:29:320:31 | mc5 | +| tests.cpp:320:34:320:36 | mc6 | +| tests.cpp:320:39:320:41 | mc7 | +| tests.cpp:320:44:320:46 | mc8 | +| tests.cpp:320:49:320:51 | mc9 | +| tests.cpp:320:54:320:57 | mc10 | +| tests.cpp:320:60:320:63 | mc11 | +| tests.cpp:321:11:321:13 | ptr | +| tests.cpp:321:17:321:23 | mc4_ptr | +| tests.cpp:322:17:322:19 | mdc | +| tests.cpp:323:23:323:25 | mnc | +| tests.cpp:323:28:323:31 | mnc2 | +| tests.cpp:324:24:324:31 | mnc2_ptr | +| tests.cpp:330:6:330:6 | a | +| tests.cpp:429:8:429:8 | operator= | +| tests.cpp:429:8:429:8 | operator= | +| tests.cpp:429:8:429:14 | intPair | +| tests.cpp:430:6:430:10 | first | +| tests.cpp:431:6:431:11 | second | +| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn | +| tests.cpp:434:37:434:43 | fun_ptr | +| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst | +| tests.cpp:435:46:435:52 | fun_ptr | +| tests.cpp:436:6:436:25 | madCallArg0WithValue | +| tests.cpp:436:34:436:40 | fun_ptr | +| tests.cpp:436:53:436:57 | value | +| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction | +| tests.cpp:437:45:437:51 | fun_ptr | +| tests.cpp:437:64:437:68 | value | +| tests.cpp:439:5:439:14 | getTainted | +| tests.cpp:440:6:440:13 | useValue | +| tests.cpp:440:19:440:19 | x | +| tests.cpp:441:6:441:17 | dontUseValue | +| tests.cpp:441:23:441:23 | x | +| tests.cpp:443:6:443:27 | test_function_pointers | +| tests.cpp:456:19:456:19 | X | +| tests.cpp:457:8:457:35 | StructWithTypedefInParameter | +| tests.cpp:457:8:457:35 | StructWithTypedefInParameter | +| tests.cpp:458:12:458:15 | Type | +| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | +| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | +| tests.cpp:459:45:459:45 | x | +| tests.cpp:459:45:459:45 | x | +| tests.cpp:462:6:462:37 | test_parameter_ref_to_return_ref | +| tests.cpp:463:6:463:6 | x | +| tests.cpp:464:36:464:36 | s | +| tests.cpp:465:6:465:6 | y | +| tests.cpp:469:7:469:9 | INT | +| tests.cpp:471:5:471:17 | receive_array | +| tests.cpp:471:23:471:23 | a | +| tests.cpp:473:6:473:23 | test_receive_array | +| tests.cpp:474:6:474:6 | x | +| tests.cpp:475:6:475:10 | array | +| tests.cpp:476:6:476:6 | y | +flowSummaryNode | tests.cpp:144:5:144:19 | [summary param] 0 in madArg0ToReturn | ParameterNode | madArg0ToReturn | madArg0ToReturn | | tests.cpp:144:5:144:19 | [summary] to write: ReturnValue in madArg0ToReturn | ReturnNode | madArg0ToReturn | madArg0ToReturn | | tests.cpp:145:6:145:28 | [summary param] 0 in madArg0ToReturnIndirect | ParameterNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect | diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml new file mode 100644 index 000000000000..952612234731 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml @@ -0,0 +1,84 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: sourceModel + data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance + - ["", "", False, "localMadSource", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "remoteMadSource", "", "", "ReturnValue", "remote", "manual"] + - ["", "", False, "localMadSourceVoid", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "localMadSourceHasBody", "", "", "ReturnValue", "local", "manual"] + - ["", "", False, "remoteMadSourceIndirect", "", "", "ReturnValue[*]", "remote", "manual"] + - ["", "", False, "remoteMadSourceDoubleIndirect", "", "", "ReturnValue[**]", "remote", "manual"] + - ["", "", False, "remoteMadSourceIndirectArg0", "", "", "Argument[*0]", "remote", "manual"] + - ["", "", False, "remoteMadSourceIndirectArg1", "", "", "Argument[*1]", "remote", "manual"] + - ["", "", False, "remoteMadSourceVar", "", "", "", "remote", "manual"] + - ["", "", False, "remoteMadSourceVarIndirect", "", "", "*", "remote", "manual"] # we can't express this source/sink correctly at present, "*" is not a valid access path + - ["", "", False, "remoteMadSourceParam0", "", "", "Parameter[0]", "remote", "manual"] + - ["MyNamespace", "", False, "namespaceLocalMadSource", "", "", "ReturnValue", "local", "manual"] + - ["MyNamespace", "", False, "namespaceLocalMadSourceVar", "", "", "", "local", "manual"] + - ["MyNamespace::MyNamespace2", "", False, "namespace2LocalMadSource", "", "", "ReturnValue", "local", "manual"] + - ["", "MyClass", True, "memberRemoteMadSource", "", "", "ReturnValue", "remote", "manual"] + - ["", "MyClass", True, "memberRemoteMadSourceIndirectArg0", "", "", "Argument[*0]", "remote", "manual"] + - ["", "MyClass", True, "memberRemoteMadSourceVar", "", "", "", "remote", "manual"] + - ["", "MyClass", True, "subtypeRemoteMadSource1", "", "", "ReturnValue", "remote", "manual"] + - ["", "MyClass", False, "subtypeNonSource", "", "", "ReturnValue", "remote", "manual"] # the tests define this in MyDerivedClass, so it should *not* be recongized as a source + - ["", "MyClass", True, "qualifierSource", "", "", "Argument[-1]", "remote", "manual"] + - ["", "MyClass", True, "qualifierFieldSource", "", "", "Argument[-1].val", "remote", "manual"] + - ["", "MyDerivedClass", False, "subtypeRemoteMadSource2", "", "", "ReturnValue", "remote", "manual"] + - addsTo: + pack: codeql/cpp-all + extensible: sinkModel + data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance + - ["", "", False, "madSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] + - ["", "", False, "madSinkArg1", "", "", "Argument[1]", "test-sink", "manual"] + - ["", "", False, "madSinkArg01", "", "", "Argument[0..1]", "test-sink", "manual"] + - ["", "", False, "madSinkArg02", "", "", "Argument[0,2]", "test-sink", "manual"] + - ["", "", False, "madSinkIndirectArg0", "", "", "Argument[*0]", "test-sink", "manual"] + - ["", "", False, "madSinkDoubleIndirectArg0", "", "", "Argument[**0]", "test-sink", "manual"] + - ["", "", False, "madSinkVar", "", "", "", "test-sink", "manual"] + - ["", "", False, "madSinkVarIndirect", "", "", "*", "test-sink", "manual"] # we can't express this source/sink correctly at present, "*" is not a valid access path + - ["", "", False, "madSinkParam0", "", "", "Parameter[0]", "test-sink", "manual"] + - ["", "MyClass", True, "memberMadSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] + - ["", "MyClass", True, "memberMadSinkVar", "", "", "", "test-sink", "manual"] + - ["", "MyClass", True, "qualifierSink", "", "", "Argument[-1]", "test-sink", "manual"] + - ["", "MyClass", True, "qualifierArg0Sink", "", "", "Argument[-1..0]", "test-sink", "manual"] + - ["", "MyClass", True, "qualifierFieldSink", "", "", "Argument[-1].val", "test-sink", "manual"] + - ["MyNamespace", "MyClass", True, "namespaceMemberMadSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] + - ["MyNamespace", "MyClass", True, "namespaceStaticMemberMadSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] + - ["MyNamespace", "MyClass", True, "namespaceMemberMadSinkVar", "", "", "", "test-sink", "manual"] + - ["MyNamespace", "MyClass", True, "namespaceStaticMemberMadSinkVar", "", "", "", "test-sink", "manual"] + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "", False, "madArg0ToReturn", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0ToReturnIndirect", "", "", "Argument[0]", "ReturnValue[*]", "taint", "manual"] + - ["", "", False, "madArg0ToReturnValueFlow", "", "", "Argument[0]", "ReturnValue", "value", "manual"] + - ["", "", False, "madArg0IndirectToReturn", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0DoubleIndirectToReturn", "", "", "Argument[**0]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0NotIndirectToReturn", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0ToArg1Indirect", "", "", "Argument[0]", "Argument[*1]", "taint", "manual"] + - ["", "", False, "madArg0IndirectToArg1Indirect", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["", "", False, "madArgsComplex", "", "", "Argument[*0..1,2]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madAndImplementedComplex", "", "", "Argument[2]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArgsAny", "", "", "Argument", "ReturnValue", "taint", "manual"] # we can't express this source/sink correctly at present, "Argument" is not a valid input + - ["", "", False, "madArg0FieldToReturn", "", "", "Argument[0].Field[value]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0IndirectFieldToReturn", "", "", "Argument[*0].Field[value]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0FieldIndirectToReturn", "", "", "Argument[0].Field[*ptr]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madArg0ToReturnField", "", "", "Argument[0]", "ReturnValue.Field[value]", "taint", "manual"] + - ["", "", False, "madArg0ToReturnIndirectField", "", "", "Argument[0]", "ReturnValue[*].Field[value]", "taint", "manual"] + - ["", "", False, "madArg0ToReturnFieldIndirect", "", "", "Argument[0]", "ReturnValue.Field[*ptr]", "taint", "manual"] + - ["", "", False, "madFieldToFieldVar", "", "", "Field[value]", "Field[value2]", "taint", "manual"] # we can't express this source/sink correctly at present, "Field[value]" is not a valid input and "Field[value2]" is not a valid output + - ["", "", False, "madFieldToIndirectFieldVar", "", "", "Field[value]", "Field[*ptr]", "taint", "manual"] # we can't express this source/sink correctly at present, "Field[value]" is not a valid input and "Field[*ptr]" is not a valid output + - ["", "", False, "madIndirectFieldToFieldVar", "", "", "Field[value]", "Field[value2]", "taint", "manual"] # we can't express this source/sink correctly at present, "Field[value]" is not a valid input and "Field[value2]" is not a valid output + - ["", "MyClass", True, "madArg0ToSelf", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["", "MyClass", True, "madSelfToReturn", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["", "MyClass", True, "madArg0ToField", "", "", "Argument[0]", "Argument[-1].Field[val]", "taint", "manual"] + - ["", "MyClass", True, "madFieldToReturn", "", "", "Argument[-1].Field[val]", "ReturnValue", "taint", "manual"] + - ["MyNamespace", "MyClass", True, "namespaceMadSelfToReturn", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["", "", False, "madCallArg0ReturnToReturn", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", False, "madCallArg0ReturnToReturnFirst", "", "", "Argument[0].ReturnValue", "ReturnValue.Field[first]", "value", "manual"] + - ["", "", False, "madCallArg0WithValue", "", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] + - ["", "", False, "madCallReturnValueIgnoreFunction", "", "", "Argument[1]", "ReturnValue", "value", "manual"] + - ["", "StructWithTypedefInParameter", True, "parameter_ref_to_return_ref", "(const T &)", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["", "", False, "receive_array", "(int[20])", "", "Argument[*0]", "ReturnValue", "taint", "manual"] diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ql b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ql new file mode 100644 index 000000000000..4b89b7da4093 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ql @@ -0,0 +1,74 @@ +import semmle.code.cpp.ir.dataflow.internal.DataFlowImplConsistency::Consistency +import semmle.code.cpp.ir.dataflow.internal.DataFlowNodes +import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate +import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil +import semmle.code.cpp.security.FlowSources +import utils.test.dataflow.FlowTestCommon + +module InterpretElementTest implements TestSig { + string getARelevantTag() { result = "interpretElement" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(Element e | + e = interpretElement(_, _, _, _, _, _) and + location = e.getLocation() and + element = e.toString() and + tag = "interpretElement" and + value = "" + ) + } +} + +query predicate summaryCalls(SummaryCall c) { any() } + +query predicate summarizedCallables(SummarizedCallable c) { any() } + +query predicate sourceCallables(SourceCallable c) { c.getLocation().getFile().toString() != "" } + +module IRTest { + private import semmle.code.cpp.ir.IR + private import semmle.code.cpp.ir.dataflow.TaintTracking + + /** Common data flow configuration to be used by tests. */ + module TestAllocationConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof FlowSource + or + source.asExpr().(FunctionCall).getTarget().getName() = + ["source", "source2", "source3", "sourcePtr"] + or + source.asIndirectExpr(1).(FunctionCall).getTarget().getName() = "sourceIndirect" + } + + predicate isSink(DataFlow::Node sink) { + sinkNode(sink, "test-sink") + or + exists(FunctionCall call | + call.getTarget().getName() = "sink" and + sink.asExpr() = call.getAnArgument() + ) + } + } + + module IRFlow = TaintTracking::Global; +} + +import MakeTest, InterpretElementTest>> + +string describe(DataFlow::Node n) { + n instanceof ParameterNode and result = "ParameterNode" + or + n instanceof PostUpdateNode and result = "PostUpdateNode" + or + n instanceof ArgumentNode and result = "ArgumentNode" + or + n instanceof ReturnNode and result = "ReturnNode" + or + n instanceof OutNode and result = "OutNode" +} + +query predicate flowSummaryNode(FlowSummaryNode n, string str1, string str2, string str3) { + str1 = concat(describe(n), ", ") and + str2 = concat(n.getSummarizedCallable().toString(), ", ") and + str3 = concat(n.getEnclosingCallable().toString(), ", ") +} diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.qll b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.qll deleted file mode 100644 index e8d1393fc4a7..000000000000 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.qll +++ /dev/null @@ -1,105 +0,0 @@ -import semmle.code.cpp.security.FlowSources - -/** - * Models-as-data source models for this test. - */ -private class TestSources extends SourceModelCsv { - override predicate row(string row) { - row = - [ - ";;false;localMadSource;;;ReturnValue;local", - ";;false;remoteMadSource;;;ReturnValue;remote", - ";;false;localMadSourceVoid;;;ReturnValue;local", - ";;false;localMadSourceHasBody;;;ReturnValue;local", - ";;false;remoteMadSourceIndirect;;;ReturnValue[*];remote", - ";;false;remoteMadSourceDoubleIndirect;;;ReturnValue[**];remote", - ";;false;remoteMadSourceIndirectArg0;;;Argument[*0];remote", - ";;false;remoteMadSourceIndirectArg1;;;Argument[*1];remote", - ";;false;remoteMadSourceVar;;;;remote", - ";;false;remoteMadSourceVarIndirect;;;*;remote", // not correctly expressed - ";;false;remoteMadSourceParam0;;;Parameter[0];remote", - "MyNamespace;;false;namespaceLocalMadSource;;;ReturnValue;local", - "MyNamespace;;false;namespaceLocalMadSourceVar;;;;local", - "MyNamespace::MyNamespace2;;false;namespace2LocalMadSource;;;ReturnValue;local", - ";MyClass;true;memberRemoteMadSource;;;ReturnValue;remote", - ";MyClass;true;memberRemoteMadSourceIndirectArg0;;;Argument[*0];remote", - ";MyClass;true;memberRemoteMadSourceVar;;;;remote", - ";MyClass;true;subtypeRemoteMadSource1;;;ReturnValue;remote", - ";MyClass;false;subtypeNonSource;;;ReturnValue;remote", // the tests define this in MyDerivedClass, so it should *not* be recongized as a source - ";MyClass;true;qualifierSource;;;Argument[-1];remote", - ";MyClass;true;qualifierFieldSource;;;Argument[-1].val;remote", - ";MyDerivedClass;false;subtypeRemoteMadSource2;;;ReturnValue;remote", - ] - } -} - -/** - * Models-as-data sink models for this test. - */ -private class TestSinks extends SinkModelCsv { - override predicate row(string row) { - row = - [ - ";;false;madSinkArg0;;;Argument[0];test-sink", - ";;false;madSinkArg1;;;Argument[1];test-sink", - ";;false;madSinkArg01;;;Argument[0..1];test-sink", - ";;false;madSinkArg02;;;Argument[0,2];test-sink", - ";;false;madSinkIndirectArg0;;;Argument[*0];test-sink", - ";;false;madSinkDoubleIndirectArg0;;;Argument[**0];test-sink", - ";;false;madSinkVar;;;;test-sink", - ";;false;madSinkVarIndirect;;;*;test-sink", // not correctly expressed - ";;false;madSinkParam0;;;Parameter[0];test-sink", - ";MyClass;true;memberMadSinkArg0;;;Argument[0];test-sink", - ";MyClass;true;memberMadSinkVar;;;;test-sink", - ";MyClass;true;qualifierSink;;;Argument[-1];test-sink", - ";MyClass;true;qualifierArg0Sink;;;Argument[-1..0];test-sink", - ";MyClass;true;qualifierFieldSink;;;Argument[-1].val;test-sink", - "MyNamespace;MyClass;true;namespaceMemberMadSinkArg0;;;Argument[0];test-sink", - "MyNamespace;MyClass;true;namespaceStaticMemberMadSinkArg0;;;Argument[0];test-sink", - "MyNamespace;MyClass;true;namespaceMemberMadSinkVar;;;;test-sink", - "MyNamespace;MyClass;true;namespaceStaticMemberMadSinkVar;;;;test-sink", - ] - } -} - -/** - * Models-as-data summary models for this test. - */ -private class TestSummaries extends SummaryModelCsv { - override predicate row(string row) { - row = - [ - ";;false;madArg0ToReturn;;;Argument[0];ReturnValue;taint", - ";;false;madArg0ToReturnIndirect;;;Argument[0];ReturnValue[*];taint", - ";;false;madArg0ToReturnValueFlow;;;Argument[0];ReturnValue;value", - ";;false;madArg0IndirectToReturn;;;Argument[*0];ReturnValue;taint", - ";;false;madArg0DoubleIndirectToReturn;;;Argument[**0];ReturnValue;taint", - ";;false;madArg0NotIndirectToReturn;;;Argument[0];ReturnValue;taint", - ";;false;madArg0ToArg1Indirect;;;Argument[0];Argument[*1];taint", - ";;false;madArg0IndirectToArg1Indirect;;;Argument[*0];Argument[*1];taint", - ";;false;madArgsComplex;;;Argument[*0..1,2];ReturnValue;taint", - ";;false;madAndImplementedComplex;;;Argument[2];ReturnValue;taint", - ";;false;madArgsAny;;;Argument;ReturnValue;taint", // (syntax not supported) - ";;false;madArg0FieldToReturn;;;Argument[0].Field[value];ReturnValue;taint", - ";;false;madArg0IndirectFieldToReturn;;;Argument[*0].Field[value];ReturnValue;taint", - ";;false;madArg0FieldIndirectToReturn;;;Argument[0].Field[*ptr];ReturnValue;taint", - ";;false;madArg0ToReturnField;;;Argument[0];ReturnValue.Field[value];taint", - ";;false;madArg0ToReturnIndirectField;;;Argument[0];ReturnValue[*].Field[value];taint", - ";;false;madArg0ToReturnFieldIndirect;;;Argument[0];ReturnValue.Field[*ptr];taint", - ";;false;madFieldToFieldVar;;;Field[value];Field[value2];taint", - ";;false;madFieldToIndirectFieldVar;;;Field[value];Field[*ptr];taint", - ";;false;madIndirectFieldToFieldVar;;;;Field[value];Field[value2];taint", // not correctly expressed - ";MyClass;true;madArg0ToSelf;;;Argument[0];Argument[-1];taint", - ";MyClass;true;madSelfToReturn;;;Argument[-1];ReturnValue;taint", - ";MyClass;true;madArg0ToField;;;Argument[0];Argument[-1].Field[val];taint", - ";MyClass;true;madFieldToReturn;;;Argument[-1].Field[val];ReturnValue;taint", - "MyNamespace;MyClass;true;namespaceMadSelfToReturn;;;Argument[-1];ReturnValue;taint", - ";;false;madCallArg0ReturnToReturn;;;Argument[0].ReturnValue;ReturnValue;value", - ";;false;madCallArg0ReturnToReturnFirst;;;Argument[0].ReturnValue;ReturnValue.Field[first];value", - ";;false;madCallArg0WithValue;;;Argument[1];Argument[0].Parameter[0];value", - ";;false;madCallReturnValueIgnoreFunction;;;Argument[1];ReturnValue;value", - ";StructWithTypedefInParameter;true;parameter_ref_to_return_ref;(const T &);;Argument[*0];ReturnValue[*];value", - ";;false;receive_array;(int[20]);;Argument[*0];ReturnValue;taint" - ] - } -} diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 45666a3b50b8..c3e46114edf4 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -277,7 +277,7 @@ bad_asts.cpp: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Point & # 19| : -# 19| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 19| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field x # 19| Type = [IntType] int # 19| ValueCategory = prvalue # 19| getExpr(): [ReferenceFieldAccess] x @@ -289,7 +289,7 @@ bad_asts.cpp: # 19| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 19| Type = [SpecifiedType] const Point # 19| ValueCategory = lvalue -# 19| getInitializer(1): [ConstructorFieldInit] constructor init of field y +# 19| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field y # 19| Type = [IntType] int # 19| ValueCategory = prvalue # 19| getExpr(): [ReferenceFieldAccess] y @@ -8986,20 +8986,20 @@ ir.cpp: # 658| [Constructor] void C::C() # 658| : # 658| : -# 659| getInitializer(0): [ConstructorFieldInit] constructor init of field m_a +# 659| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field m_a # 659| Type = [IntType] int # 659| ValueCategory = prvalue # 659| getExpr(): [Literal] 1 # 659| Type = [IntType] int # 659| Value = [Literal] 1 # 659| ValueCategory = prvalue -# 663| getInitializer(1): [ConstructorFieldInit] constructor init of field m_b +# 663| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field m_b # 663| Type = [Struct] String # 663| ValueCategory = prvalue # 663| getExpr(): [ConstructorCall] call to String # 663| Type = [VoidType] void # 663| ValueCategory = prvalue -# 660| getInitializer(2): [ConstructorFieldInit] constructor init of field m_c +# 660| getInitializer(2): [ConstructorDirectFieldInit] constructor init of field m_c # 660| Type = [PlainCharType] char # 660| ValueCategory = prvalue # 660| getExpr(): [Literal] 3 @@ -9011,14 +9011,14 @@ ir.cpp: # 660| Type = [PlainCharType] char # 660| Value = [CStyleCast] 3 # 660| ValueCategory = prvalue -# 661| getInitializer(3): [ConstructorFieldInit] constructor init of field m_e +# 661| getInitializer(3): [ConstructorDirectFieldInit] constructor init of field m_e # 661| Type = [VoidPointerType] void * # 661| ValueCategory = prvalue # 661| getExpr(): [Literal] 0 # 661| Type = [VoidPointerType] void * # 661| Value = [Literal] 0 # 661| ValueCategory = prvalue -# 662| getInitializer(4): [ConstructorFieldInit] constructor init of field m_f +# 662| getInitializer(4): [ConstructorDirectFieldInit] constructor init of field m_f # 662| Type = [Struct] String # 662| ValueCategory = prvalue # 662| getExpr(): [ConstructorCall] call to String @@ -9474,7 +9474,7 @@ ir.cpp: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Base & # 745| : -# 745| getInitializer(0): [ConstructorFieldInit] constructor init of field base_s +# 745| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field base_s # 745| Type = [Struct] String # 745| ValueCategory = prvalue # 745| getExpr(): [ConstructorCall] call to String @@ -9485,7 +9485,7 @@ ir.cpp: # 748| [Constructor] void Base::Base() # 748| : # 748| : -# 748| getInitializer(0): [ConstructorFieldInit] constructor init of field base_s +# 748| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field base_s # 748| Type = [Struct] String # 748| ValueCategory = prvalue # 748| getExpr(): [ConstructorCall] call to String @@ -9593,7 +9593,7 @@ ir.cpp: # 757| getInitializer(0): [ConstructorDirectInit] call to Base # 757| Type = [VoidType] void # 757| ValueCategory = prvalue -# 757| getInitializer(1): [ConstructorFieldInit] constructor init of field middle_s +# 757| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field middle_s # 757| Type = [Struct] String # 757| ValueCategory = prvalue # 757| getExpr(): [ConstructorCall] call to String @@ -9704,7 +9704,7 @@ ir.cpp: # 766| getInitializer(0): [ConstructorDirectInit] call to Middle # 766| Type = [VoidType] void # 766| ValueCategory = prvalue -# 766| getInitializer(1): [ConstructorFieldInit] constructor init of field derived_s +# 766| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field derived_s # 766| Type = [Struct] String # 766| ValueCategory = prvalue # 766| getExpr(): [ConstructorCall] call to String @@ -9743,7 +9743,7 @@ ir.cpp: # 775| getInitializer(0): [ConstructorVirtualInit] call to Base # 775| Type = [VoidType] void # 775| ValueCategory = prvalue -# 775| getInitializer(1): [ConstructorFieldInit] constructor init of field middlevb1_s +# 775| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field middlevb1_s # 775| Type = [Struct] String # 775| ValueCategory = prvalue # 775| getExpr(): [ConstructorCall] call to String @@ -9782,7 +9782,7 @@ ir.cpp: # 784| getInitializer(0): [ConstructorVirtualInit] call to Base # 784| Type = [VoidType] void # 784| ValueCategory = prvalue -# 784| getInitializer(1): [ConstructorFieldInit] constructor init of field middlevb2_s +# 784| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field middlevb2_s # 784| Type = [Struct] String # 784| ValueCategory = prvalue # 784| getExpr(): [ConstructorCall] call to String @@ -9827,7 +9827,7 @@ ir.cpp: # 793| getInitializer(2): [ConstructorDirectInit] call to MiddleVB2 # 793| Type = [VoidType] void # 793| ValueCategory = prvalue -# 793| getInitializer(3): [ConstructorFieldInit] constructor init of field derivedvb_s +# 793| getInitializer(3): [ConstructorDirectFieldInit] constructor init of field derivedvb_s # 793| Type = [Struct] String # 793| ValueCategory = prvalue # 793| getExpr(): [ConstructorCall] call to String @@ -15190,7 +15190,7 @@ ir.cpp: # 1508| getInitializer(0): [ConstructorInit] constructor init # 1508| Type = [Struct] Inheritance_Test_B # 1508| ValueCategory = prvalue -# 1508| getInitializer(1): [ConstructorFieldInit] constructor init of field x +# 1508| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field x # 1508| Type = [IntType] int # 1508| ValueCategory = prvalue # 1508| getExpr(): [Literal] 42 @@ -15414,7 +15414,7 @@ ir.cpp: # 1533| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() # 1533| : # 1533| : -# 1533| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 1533| getInitializer(0): [ConstructorDefaultFieldInit] constructor init of field x # 1533| Type = [IntType] int # 1533| ValueCategory = prvalue # 1533| getEntryPoint(): [BlockStmt] { ... } @@ -15434,25 +15434,25 @@ ir.cpp: # 1537| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() # 1537| : # 1537| : -# 1537| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1537| getInitializer(0): [ConstructorDefaultFieldInit] constructor init of field i # 1537| Type = [IntType] int # 1537| ValueCategory = prvalue -# 1537| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1537| getInitializer(1): [ConstructorDefaultFieldInit] constructor init of field d # 1537| Type = [DoubleType] double # 1537| ValueCategory = prvalue -# 1537| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1537| getInitializer(2): [ConstructorDefaultFieldInit] constructor init of field r # 1537| Type = [LValueReferenceType] int & # 1537| ValueCategory = prvalue -# 1537| getInitializer(3): [ConstructorFieldInit] constructor init of field p +# 1537| getInitializer(3): [ConstructorDefaultFieldInit] constructor init of field p # 1537| Type = [IntPointerType] int * # 1537| ValueCategory = prvalue -# 1537| getInitializer(4): [ConstructorFieldInit] constructor init of field xs +# 1537| getInitializer(4): [ConstructorDefaultFieldInit] constructor init of field xs # 1537| Type = [CTypedefType,NestedTypedefType] ArrayType # 1537| ValueCategory = prvalue -# 1537| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt +# 1537| getInitializer(5): [ConstructorDefaultFieldInit] constructor init of field r_alt # 1537| Type = [CTypedefType,NestedTypedefType] RefType # 1537| ValueCategory = prvalue -# 1537| getInitializer(6): [ConstructorFieldInit] constructor init of field m +# 1537| getInitializer(6): [ConstructorDirectFieldInit] constructor init of field m # 1537| Type = [Struct] StructuredBindingDataMemberMemberStruct # 1537| ValueCategory = prvalue # 1537| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct @@ -15465,7 +15465,7 @@ ir.cpp: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & # 1537| : -# 1537| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1537| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field i # 1537| Type = [IntType] int # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] i @@ -15477,7 +15477,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1537| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field d # 1537| Type = [DoubleType] double # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] d @@ -15489,7 +15489,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(2): [ConstructorFieldInit] constructor init of field b +# 1537| getInitializer(2): [ConstructorDirectFieldInit] constructor init of field b # 1537| Type = [IntType] unsigned int # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] b @@ -15501,7 +15501,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(3): [ConstructorFieldInit] constructor init of field r +# 1537| getInitializer(3): [ConstructorDirectFieldInit] constructor init of field r # 1537| Type = [LValueReferenceType] int & # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] r @@ -15513,7 +15513,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(4): [ConstructorFieldInit] constructor init of field p +# 1537| getInitializer(4): [ConstructorDirectFieldInit] constructor init of field p # 1537| Type = [IntPointerType] int * # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] p @@ -15525,7 +15525,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(5): [ConstructorFieldInit] constructor init of field xs +# 1537| getInitializer(5): [ConstructorDirectFieldInit] constructor init of field xs # 1537| Type = [CTypedefType,NestedTypedefType] ArrayType # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] xs @@ -15537,7 +15537,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt +# 1537| getInitializer(6): [ConstructorDirectFieldInit] constructor init of field r_alt # 1537| Type = [CTypedefType,NestedTypedefType] RefType # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] r_alt @@ -15549,7 +15549,7 @@ ir.cpp: # 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct # 1537| ValueCategory = lvalue -# 1537| getInitializer(7): [ConstructorFieldInit] constructor init of field m +# 1537| getInitializer(7): [ConstructorDirectFieldInit] constructor init of field m # 1537| Type = [Struct] StructuredBindingDataMemberMemberStruct # 1537| ValueCategory = prvalue # 1537| getExpr(): [ReferenceFieldAccess] m @@ -15918,13 +15918,13 @@ ir.cpp: # 1590| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() # 1590| : # 1590| : -# 1590| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1590| getInitializer(0): [ConstructorDefaultFieldInit] constructor init of field i # 1590| Type = [IntType] int # 1590| ValueCategory = prvalue -# 1590| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1590| getInitializer(1): [ConstructorDefaultFieldInit] constructor init of field d # 1590| Type = [DoubleType] double # 1590| ValueCategory = prvalue -# 1590| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1590| getInitializer(2): [ConstructorDefaultFieldInit] constructor init of field r # 1590| Type = [LValueReferenceType] int & # 1590| ValueCategory = prvalue # 1590| getEntryPoint(): [BlockStmt] { ... } @@ -15934,7 +15934,7 @@ ir.cpp: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & # 1590| : -# 1590| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1590| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field i # 1590| Type = [IntType] int # 1590| ValueCategory = prvalue # 1590| getExpr(): [ReferenceFieldAccess] i @@ -15946,7 +15946,7 @@ ir.cpp: # 1590| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1590| Type = [SpecifiedType] const StructuredBindingTupleRefGet # 1590| ValueCategory = lvalue -# 1590| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1590| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field d # 1590| Type = [DoubleType] double # 1590| ValueCategory = prvalue # 1590| getExpr(): [ReferenceFieldAccess] d @@ -15958,7 +15958,7 @@ ir.cpp: # 1590| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1590| Type = [SpecifiedType] const StructuredBindingTupleRefGet # 1590| ValueCategory = lvalue -# 1590| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1590| getInitializer(2): [ConstructorDirectFieldInit] constructor init of field r # 1590| Type = [LValueReferenceType] int & # 1590| ValueCategory = prvalue # 1590| getExpr(): [ReferenceFieldAccess] r @@ -16327,10 +16327,10 @@ ir.cpp: # 1657| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() # 1657| : # 1657| : -# 1657| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1657| getInitializer(0): [ConstructorDefaultFieldInit] constructor init of field i # 1657| Type = [IntType] int # 1657| ValueCategory = prvalue -# 1657| getInitializer(1): [ConstructorFieldInit] constructor init of field r +# 1657| getInitializer(1): [ConstructorDefaultFieldInit] constructor init of field r # 1657| Type = [LValueReferenceType] int & # 1657| ValueCategory = prvalue # 1657| getEntryPoint(): [BlockStmt] { ... } @@ -19817,7 +19817,7 @@ ir.cpp: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ClassWithDestructor & # 2188| : -# 2188| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 2188| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field x # 2188| Type = [CharPointerType] char * # 2188| ValueCategory = prvalue # 2188| getExpr(): [ReferenceFieldAccess] x @@ -25642,6 +25642,168 @@ ir.cpp: # 2884| Type = [VoidType] void # 2884| ValueCategory = prvalue # 2886| getStmt(6): [ReturnStmt] return ... +# 2889| [CopyAssignmentOperator] StructInit& StructInit::operator=(StructInit const&) +# 2889| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const StructInit & +# 2889| [MoveAssignmentOperator] StructInit& StructInit::operator=(StructInit&&) +# 2889| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] StructInit && +# 2889| [CopyConstructor] void StructInit::StructInit(StructInit const&) +# 2889| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const StructInit & +# 2889| [MoveConstructor] void StructInit::StructInit(StructInit&&) +# 2889| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] StructInit && +# 2897| [Constructor] void StructInit::StructInit(int) +# 2897| : +# 2897| getParameter(0): [Parameter] j +# 2897| Type = [IntType] int +# 2897| : +# 2897| getInitializer(0): [ConstructorDefaultFieldInit] constructor init of field i +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getInitializer(1): [ConstructorDirectFieldInit] constructor init of field j +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getExpr(): [VariableAccess] j +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue(load) +# 2897| getInitializer(2): [ConstructorDefaultFieldInit] constructor init of field k +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getInitializer(3): [ConstructorDefaultFieldInit] constructor init of field l +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getInitializer(4): [ConstructorDefaultFieldInit] constructor init of field m +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getInitializer(5): [ConstructorDirectFieldInit] constructor init of field n +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getExpr(): [FunctionCall] call to get_val +# 2897| Type = [IntType] int +# 2897| ValueCategory = prvalue +# 2897| getQualifier(): [ThisExpr] this +# 2897| Type = [PointerType] StructInit * +# 2897| ValueCategory = prvalue(load) +# 2897| getEntryPoint(): [BlockStmt] { ... } +# 2897| getStmt(0): [ReturnStmt] return ... +# 2899| [Constructor] void StructInit::StructInit() +# 2899| : +# 2899| : +# 2899| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field i +# 2899| Type = [IntType] int +# 2899| ValueCategory = prvalue +# 2899| getExpr(): [Literal] 41 +# 2899| Type = [IntType] int +# 2899| Value = [Literal] 41 +# 2899| ValueCategory = prvalue +# 2899| getInitializer(1): [ConstructorDefaultFieldInit] constructor init of field j +# 2899| Type = [IntType] int +# 2899| ValueCategory = prvalue +# 2899| getInitializer(2): [ConstructorDirectFieldInit] constructor init of field k +# 2899| Type = [IntType] int +# 2899| ValueCategory = prvalue +# 2899| getExpr(): [Literal] 41 +# 2899| Type = [IntType] int +# 2899| Value = [Literal] 41 +# 2899| ValueCategory = prvalue +# 2899| getInitializer(3): [ConstructorDefaultFieldInit] constructor init of field l +# 2899| Type = [IntType] int +# 2899| ValueCategory = prvalue +# 2899| getInitializer(4): [ConstructorDefaultFieldInit] constructor init of field m +# 2899| Type = [IntType] int +# 2899| ValueCategory = prvalue +# 2899| getInitializer(5): [ConstructorDefaultFieldInit] constructor init of field n +# 2899| Type = [IntType] int +# 2899| ValueCategory = prvalue +# 2899| getEntryPoint(): [BlockStmt] { ... } +# 2899| getStmt(0): [ReturnStmt] return ... +# 2901| [MemberFunction] int StructInit::get_val() +# 2901| : +# 2901| getEntryPoint(): [BlockStmt] { ... } +# 2901| getStmt(0): [ReturnStmt] return ... +# 2901| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] k +# 2901| Type = [IntType] int +# 2901| ValueCategory = prvalue(load) +# 2901| getQualifier(): [ThisExpr] this +# 2901| Type = [PointerType] StructInit * +# 2901| ValueCategory = prvalue(load) +# 2905| [Constructor] void StructInitFromTemplate::StructInitFromTemplate() +# 2905| : +# 2905| : +# 2905| getInitializer(0): [ConstructorDefaultFieldInit] constructor init of field t +# 2905| Type = [IntType] int +# 2905| ValueCategory = prvalue +# 2905| getEntryPoint(): [BlockStmt] { ... } +# 2905| getStmt(0): [ReturnStmt] return ... +# 2909| [GlobalVariable] StructInitFromTemplate StructInitFromTemplateVar +#-----| getInitializer(): [Initializer] initializer for StructInitFromTemplateVar +#-----| getExpr(): [ConstructorCall] call to StructInitFromTemplate +#-----| Type = [VoidType] void +#-----| ValueCategory = prvalue +#-----| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] StructInitFromTemplate +#-----| ValueCategory = prvalue(load) +# 2912| [GlobalVariable,VariableTemplateInstantiation] double VariableTemplate +# 2912| getInitializer(): [Initializer] initializer for VariableTemplate +# 2912| getExpr(): [Literal] 42 +# 2912| Type = [IntType] int +# 2912| Value = [Literal] 42 +# 2912| ValueCategory = prvalue +# 2912| getExpr().getFullyConverted(): [CStyleCast] (double)... +# 2912| Conversion = [IntegralToFloatingPointConversion] integral to floating point conversion +# 2912| Type = [DoubleType] double +# 2912| Value = [CStyleCast] 42.0 +# 2912| ValueCategory = prvalue +# 2915| [TemplateFunction,TopLevelFunction] T VariableTemplateFunc(T) +# 2915| : +# 2915| getParameter(0): [Parameter] x +# 2915| Type = [TypeTemplateParameter] T +# 2915| getEntryPoint(): [BlockStmt] { ... } +# 2916| getStmt(0): [ReturnStmt] return ... +# 2916| getExpr(): [AddExpr] ... + ... +# 2916| Type = [UnknownType] unknown +# 2916| ValueCategory = prvalue +# 2916| getLeftOperand(): [VariableAccess] VariableTemplate +# 2916| Type = [UnknownType] unknown +# 2916| ValueCategory = lvalue +# 2916| getRightOperand(): [VariableAccess] x +# 2916| Type = [TypeTemplateParameter] T +# 2916| ValueCategory = lvalue +# 2915| [FunctionTemplateInstantiation,TopLevelFunction] double VariableTemplateFunc(double) +# 2915| : +# 2915| getParameter(0): [Parameter] x +# 2915| Type = [DoubleType] double +# 2915| getEntryPoint(): [BlockStmt] { ... } +# 2916| getStmt(0): [ReturnStmt] return ... +# 2916| getExpr(): [AddExpr] ... + ... +# 2916| Type = [DoubleType] double +# 2916| ValueCategory = prvalue +# 2916| getLeftOperand(): [VariableAccess] VariableTemplate +# 2916| Type = [DoubleType] double +# 2916| Value = [VariableAccess] 42.0 +# 2916| ValueCategory = prvalue(load) +# 2916| getRightOperand(): [VariableAccess] x +# 2916| Type = [DoubleType] double +# 2916| ValueCategory = prvalue(load) +# 2919| [GlobalVariable] int VariableTemplateFuncUse +# 2919| getInitializer(): [Initializer] initializer for VariableTemplateFuncUse +# 2919| getExpr(): [FunctionCall] call to VariableTemplateFunc +# 2919| Type = [DoubleType] double +# 2919| ValueCategory = prvalue +# 2919| getArgument(0): [Literal] 2.299999999999999822 +# 2919| Type = [DoubleType] double +# 2919| Value = [Literal] 2.299999999999999822 +# 2919| ValueCategory = prvalue +# 2919| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2919| Conversion = [FloatingPointToIntegralConversion] floating point to integral conversion +# 2919| Type = [IntType] int +# 2919| ValueCategory = prvalue ir23.cpp: # 1| [TopLevelFunction] bool consteval_1() # 1| : @@ -50386,7 +50548,7 @@ perf-regression.cpp: # 6| [Constructor] void Big::Big() # 6| : # 6| : -# 6| getInitializer(0): [ConstructorFieldInit] constructor init of field buffer +# 6| getInitializer(0): [ConstructorDirectFieldInit] constructor init of field buffer # 6| Type = [ArrayType] char[1073741824] # 6| ValueCategory = prvalue # 6| getExpr(): [ArrayAggregateLiteral] {...} diff --git a/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll b/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll index aa23cf423add..6e98d23bcf47 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll +++ b/cpp/ql/test/library-tests/ir/ir/PrintConfig.qll @@ -20,5 +20,7 @@ predicate shouldDumpDeclaration(Declaration decl) { decl.(GlobalOrNamespaceVariable).hasInitializer() or decl.(StaticLocalVariable).hasInitializer() + or + decl.(Field).hasInitializer() ) } 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 369cc9495a2b..66810913e5d3 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -12361,35 +12361,111 @@ ir.cpp: # 1533| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() # 1533| Block 0 -# 1533| v1533_1(void) = EnterFunction : -# 1533| m1533_2(unknown) = AliasedDefinition : -# 1533| m1533_3(unknown) = InitializeNonLocal : -# 1533| m1533_4(unknown) = Chi : total:m1533_2, partial:m1533_3 -# 1533| r1533_5(glval) = VariableAddress[#this] : -# 1533| m1533_6(glval) = InitializeParameter[#this] : &:r1533_5 -# 1533| r1533_7(glval) = Load[#this] : &:r1533_5, m1533_6 -# 1533| m1533_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_7 -# 1533| v1533_9(void) = NoOp : -# 1533| v1533_10(void) = ReturnIndirection[#this] : &:r1533_7, m1533_8 -# 1533| v1533_11(void) = ReturnVoid : -# 1533| v1533_12(void) = AliasedUse : m1533_3 -# 1533| v1533_13(void) = ExitFunction : +# 1533| v1533_1(void) = EnterFunction : +# 1533| m1533_2(unknown) = AliasedDefinition : +# 1533| m1533_3(unknown) = InitializeNonLocal : +# 1533| m1533_4(unknown) = Chi : total:m1533_2, partial:m1533_3 +# 1533| r1533_5(glval) = VariableAddress[#this] : +# 1533| m1533_6(glval) = InitializeParameter[#this] : &:r1533_5 +# 1533| r1533_7(glval) = Load[#this] : &:r1533_5, m1533_6 +# 1533| m1533_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_7 +# 1533| m1533_9(unknown) = Chi : total:m1533_4, partial:m1533_8 +# 1533| r1533_10(glval) = FunctionAddress[x] : +# 1533| v1533_11(void) = Call[x] : func:r1533_10, this:r1533_7 +# 1533| m1533_12(unknown) = ^CallSideEffect : ~m1533_9 +# 1533| m1533_13(unknown) = Chi : total:m1533_9, partial:m1533_12 +# 1533| v1533_14(void) = ^IndirectReadSideEffect[-1] : &:r1533_7, ~m1533_13 +# 1533| m1533_15(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1533_7 +# 1533| m1533_16(unknown) = Chi : total:m1533_13, partial:m1533_15 +# 1533| v1533_17(void) = NoOp : +# 1533| v1533_18(void) = ReturnIndirection[#this] : &:r1533_7, ~m1533_16 +# 1533| v1533_19(void) = ReturnVoid : +# 1533| v1533_20(void) = AliasedUse : ~m1533_16 +# 1533| v1533_21(void) = ExitFunction : + +# 1534| int StructuredBindingDataMemberMemberStruct::x +# 1534| Block 0 +# 1534| v1534_1(void) = EnterFunction : +# 1534| m1534_2(unknown) = AliasedDefinition : +# 1534| m1534_3(unknown) = InitializeNonLocal : +# 1534| m1534_4(unknown) = Chi : total:m1534_2, partial:m1534_3 +# 1534| r1534_5(glval) = VariableAddress[#this] : +# 1534| m1534_6(glval) = InitializeParameter[#this] : &:r1534_5 +# 1534| r1534_7(glval) = Load[#this] : &:r1534_5, m1534_6 +# 1534| m1534_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1534_7 +# 1534| r1534_9(glval) = FieldAddress[x] : r1534_7 +# 1534| r1534_10(int) = Constant[5] : +# 1534| m1534_11(int) = Store[?] : &:r1534_9, r1534_10 +# 1534| m1534_12(unknown) = Chi : total:m1534_8, partial:m1534_11 +# 1534| v1534_13(void) = ReturnVoid : +# 1534| v1534_14(void) = AliasedUse : m1534_3 +# 1534| v1534_15(void) = ExitFunction : # 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() # 1537| Block 0 -# 1537| v1537_1(void) = EnterFunction : -# 1537| m1537_2(unknown) = AliasedDefinition : -# 1537| m1537_3(unknown) = InitializeNonLocal : -# 1537| m1537_4(unknown) = Chi : total:m1537_2, partial:m1537_3 -# 1537| r1537_5(glval) = VariableAddress[#this] : -# 1537| m1537_6(glval) = InitializeParameter[#this] : &:r1537_5 -# 1537| r1537_7(glval) = Load[#this] : &:r1537_5, m1537_6 -# 1537| m1537_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_7 -# 1537| v1537_9(void) = NoOp : -# 1537| v1537_10(void) = ReturnIndirection[#this] : &:r1537_7, m1537_8 -# 1537| v1537_11(void) = ReturnVoid : -# 1537| v1537_12(void) = AliasedUse : m1537_3 -# 1537| v1537_13(void) = ExitFunction : +# 1537| v1537_1(void) = EnterFunction : +# 1537| m1537_2(unknown) = AliasedDefinition : +# 1537| m1537_3(unknown) = InitializeNonLocal : +# 1537| m1537_4(unknown) = Chi : total:m1537_2, partial:m1537_3 +# 1537| r1537_5(glval) = VariableAddress[#this] : +# 1537| m1537_6(glval) = InitializeParameter[#this] : &:r1537_5 +# 1537| r1537_7(glval) = Load[#this] : &:r1537_5, m1537_6 +# 1537| m1537_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_7 +# 1537| m1537_9(unknown) = Chi : total:m1537_4, partial:m1537_8 +# 1537| r1537_10(glval) = FunctionAddress[i] : +# 1537| v1537_11(void) = Call[i] : func:r1537_10, this:r1537_7 +# 1537| m1537_12(unknown) = ^CallSideEffect : ~m1537_9 +# 1537| m1537_13(unknown) = Chi : total:m1537_9, partial:m1537_12 +# 1537| v1537_14(void) = ^IndirectReadSideEffect[-1] : &:r1537_7, ~m1537_13 +# 1537| m1537_15(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_7 +# 1537| m1537_16(unknown) = Chi : total:m1537_13, partial:m1537_15 +# 1537| r1537_17(glval) = FunctionAddress[d] : +# 1537| v1537_18(void) = Call[d] : func:r1537_17, this:r1537_7 +# 1537| m1537_19(unknown) = ^CallSideEffect : ~m1537_16 +# 1537| m1537_20(unknown) = Chi : total:m1537_16, partial:m1537_19 +# 1537| v1537_21(void) = ^IndirectReadSideEffect[-1] : &:r1537_7, ~m1537_20 +# 1537| m1537_22(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_7 +# 1537| m1537_23(unknown) = Chi : total:m1537_20, partial:m1537_22 +# 1537| r1537_24(glval) = FunctionAddress[r] : +# 1537| v1537_25(void) = Call[r] : func:r1537_24, this:r1537_7 +# 1537| m1537_26(unknown) = ^CallSideEffect : ~m1537_23 +# 1537| m1537_27(unknown) = Chi : total:m1537_23, partial:m1537_26 +# 1537| v1537_28(void) = ^IndirectReadSideEffect[-1] : &:r1537_7, ~m1537_27 +# 1537| m1537_29(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_7 +# 1537| m1537_30(unknown) = Chi : total:m1537_27, partial:m1537_29 +# 1537| r1537_31(glval) = FunctionAddress[p] : +# 1537| v1537_32(void) = Call[p] : func:r1537_31, this:r1537_7 +# 1537| m1537_33(unknown) = ^CallSideEffect : ~m1537_30 +# 1537| m1537_34(unknown) = Chi : total:m1537_30, partial:m1537_33 +# 1537| v1537_35(void) = ^IndirectReadSideEffect[-1] : &:r1537_7, ~m1537_34 +# 1537| m1537_36(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_7 +# 1537| m1537_37(unknown) = Chi : total:m1537_34, partial:m1537_36 +# 1537| r1537_38(glval) = FunctionAddress[xs] : +# 1537| v1537_39(void) = Call[xs] : func:r1537_38, this:r1537_7 +# 1537| m1537_40(unknown) = ^CallSideEffect : ~m1537_37 +# 1537| m1537_41(unknown) = Chi : total:m1537_37, partial:m1537_40 +# 1537| v1537_42(void) = ^IndirectReadSideEffect[-1] : &:r1537_7, ~m1537_41 +# 1537| m1537_43(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_7 +# 1537| m1537_44(unknown) = Chi : total:m1537_41, partial:m1537_43 +# 1537| r1537_45(glval) = FunctionAddress[r_alt] : +# 1537| v1537_46(void) = Call[r_alt] : func:r1537_45, this:r1537_7 +# 1537| m1537_47(unknown) = ^CallSideEffect : ~m1537_44 +# 1537| m1537_48(unknown) = Chi : total:m1537_44, partial:m1537_47 +# 1537| v1537_49(void) = ^IndirectReadSideEffect[-1] : &:r1537_7, ~m1537_48 +# 1537| m1537_50(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_7 +# 1537| m1537_51(unknown) = Chi : total:m1537_48, partial:m1537_50 +# 1537| r1537_52(glval) = FieldAddress[m] : r1537_7 +# 1537| r1537_53(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : +# 1537| v1537_54(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_53, this:r1537_52 +# 1537| m1537_55(unknown) = ^CallSideEffect : ~m1537_51 +# 1537| m1537_56(unknown) = Chi : total:m1537_51, partial:m1537_55 +# 1537| m1537_57(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_52 +# 1537| m1537_58(unknown) = Chi : total:m1537_56, partial:m1537_57 +# 1537| v1537_59(void) = NoOp : +# 1537| v1537_60(void) = ReturnIndirection[#this] : &:r1537_7, ~m1537_58 +# 1537| v1537_61(void) = ReturnVoid : +# 1537| v1537_62(void) = AliasedUse : ~m1537_58 +# 1537| v1537_63(void) = ExitFunction : # 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) # 1537| Block 0 @@ -12476,6 +12552,130 @@ ir.cpp: # 1537| v1537_76(void) = AliasedUse : m1537_3 # 1537| v1537_77(void) = ExitFunction : +# 1540| int StructuredBindingDataMemberStruct::i +# 1540| Block 0 +# 1540| v1540_1(void) = EnterFunction : +# 1540| m1540_2(unknown) = AliasedDefinition : +# 1540| m1540_3(unknown) = InitializeNonLocal : +# 1540| m1540_4(unknown) = Chi : total:m1540_2, partial:m1540_3 +# 1540| r1540_5(glval) = VariableAddress[#this] : +# 1540| m1540_6(glval) = InitializeParameter[#this] : &:r1540_5 +# 1540| r1540_7(glval) = Load[#this] : &:r1540_5, m1540_6 +# 1540| m1540_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1540_7 +# 1540| r1540_9(glval) = FieldAddress[i] : r1540_7 +# 1540| r1540_10(int) = Constant[1] : +# 1540| m1540_11(int) = Store[?] : &:r1540_9, r1540_10 +# 1540| m1540_12(unknown) = Chi : total:m1540_8, partial:m1540_11 +# 1540| v1540_13(void) = ReturnVoid : +# 1540| v1540_14(void) = AliasedUse : m1540_3 +# 1540| v1540_15(void) = ExitFunction : + +# 1541| double StructuredBindingDataMemberStruct::d +# 1541| Block 0 +# 1541| v1541_1(void) = EnterFunction : +# 1541| m1541_2(unknown) = AliasedDefinition : +# 1541| m1541_3(unknown) = InitializeNonLocal : +# 1541| m1541_4(unknown) = Chi : total:m1541_2, partial:m1541_3 +# 1541| r1541_5(glval) = VariableAddress[#this] : +# 1541| m1541_6(glval) = InitializeParameter[#this] : &:r1541_5 +# 1541| r1541_7(glval) = Load[#this] : &:r1541_5, m1541_6 +# 1541| m1541_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1541_7 +# 1541| r1541_9(glval) = FieldAddress[d] : r1541_7 +# 1541| r1541_10(double) = Constant[2.0] : +# 1541| m1541_11(double) = Store[?] : &:r1541_9, r1541_10 +# 1541| m1541_12(unknown) = Chi : total:m1541_8, partial:m1541_11 +# 1541| v1541_13(void) = ReturnVoid : +# 1541| v1541_14(void) = AliasedUse : m1541_3 +# 1541| v1541_15(void) = ExitFunction : + +# 1543| int& StructuredBindingDataMemberStruct::r +# 1543| Block 0 +# 1543| v1543_1(void) = EnterFunction : +# 1543| m1543_2(unknown) = AliasedDefinition : +# 1543| m1543_3(unknown) = InitializeNonLocal : +# 1543| m1543_4(unknown) = Chi : total:m1543_2, partial:m1543_3 +# 1543| r1543_5(glval) = VariableAddress[#this] : +# 1543| m1543_6(glval) = InitializeParameter[#this] : &:r1543_5 +# 1543| r1543_7(glval) = Load[#this] : &:r1543_5, m1543_6 +# 1543| m1543_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1543_7 +# 1543| m1543_9(unknown) = Chi : total:m1543_4, partial:m1543_8 +# 1543| r1543_10(glval) = FieldAddress[r] : r1543_7 +# 1543| r1543_11(StructuredBindingDataMemberStruct *) = CopyValue : r1543_7 +# 1543| r1543_12(glval) = FieldAddress[i] : r1543_11 +#-----| r0_1(int &) = CopyValue : r1543_12 +#-----| m0_2(int &) = Store[?] : &:r1543_10, r0_1 +#-----| m0_3(unknown) = Chi : total:m1543_9, partial:m0_2 +# 1543| v1543_13(void) = ReturnVoid : +# 1543| v1543_14(void) = AliasedUse : ~m0_3 +# 1543| v1543_15(void) = ExitFunction : + +# 1544| int* StructuredBindingDataMemberStruct::p +# 1544| Block 0 +# 1544| v1544_1(void) = EnterFunction : +# 1544| m1544_2(unknown) = AliasedDefinition : +# 1544| m1544_3(unknown) = InitializeNonLocal : +# 1544| m1544_4(unknown) = Chi : total:m1544_2, partial:m1544_3 +# 1544| r1544_5(glval) = VariableAddress[#this] : +# 1544| m1544_6(glval) = InitializeParameter[#this] : &:r1544_5 +# 1544| r1544_7(glval) = Load[#this] : &:r1544_5, m1544_6 +# 1544| m1544_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1544_7 +# 1544| m1544_9(unknown) = Chi : total:m1544_4, partial:m1544_8 +# 1544| r1544_10(glval) = FieldAddress[p] : r1544_7 +# 1544| r1544_11(StructuredBindingDataMemberStruct *) = CopyValue : r1544_7 +# 1544| r1544_12(glval) = FieldAddress[i] : r1544_11 +# 1544| r1544_13(int *) = CopyValue : r1544_12 +# 1544| m1544_14(int *) = Store[?] : &:r1544_10, r1544_13 +# 1544| m1544_15(unknown) = Chi : total:m1544_9, partial:m1544_14 +# 1544| v1544_16(void) = ReturnVoid : +# 1544| v1544_17(void) = AliasedUse : ~m1544_15 +# 1544| v1544_18(void) = ExitFunction : + +# 1545| StructuredBindingDataMemberStruct::ArrayType StructuredBindingDataMemberStruct::xs +# 1545| Block 0 +# 1545| v1545_1(void) = EnterFunction : +# 1545| m1545_2(unknown) = AliasedDefinition : +# 1545| m1545_3(unknown) = InitializeNonLocal : +# 1545| m1545_4(unknown) = Chi : total:m1545_2, partial:m1545_3 +# 1545| r1545_5(glval) = VariableAddress[#this] : +# 1545| m1545_6(glval) = InitializeParameter[#this] : &:r1545_5 +# 1545| r1545_7(glval) = Load[#this] : &:r1545_5, m1545_6 +# 1545| m1545_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1545_7 +# 1545| r1545_9(glval) = FieldAddress[xs] : r1545_7 +# 1545| r1545_10(int) = Constant[0] : +# 1545| r1545_11(glval) = PointerAdd[4] : r1545_9, r1545_10 +# 1545| r1545_12(int) = Constant[1] : +# 1545| m1545_13(int) = Store[?] : &:r1545_11, r1545_12 +# 1545| m1545_14(unknown) = Chi : total:m1545_8, partial:m1545_13 +# 1545| r1545_15(int) = Constant[1] : +# 1545| r1545_16(glval) = PointerAdd[4] : r1545_9, r1545_15 +# 1545| r1545_17(int) = Constant[2] : +# 1545| m1545_18(int) = Store[?] : &:r1545_16, r1545_17 +# 1545| m1545_19(unknown) = Chi : total:m1545_14, partial:m1545_18 +# 1545| v1545_20(void) = ReturnVoid : +# 1545| v1545_21(void) = AliasedUse : m1545_3 +# 1545| v1545_22(void) = ExitFunction : + +# 1546| StructuredBindingDataMemberStruct::RefType StructuredBindingDataMemberStruct::r_alt +# 1546| Block 0 +# 1546| v1546_1(void) = EnterFunction : +# 1546| m1546_2(unknown) = AliasedDefinition : +# 1546| m1546_3(unknown) = InitializeNonLocal : +# 1546| m1546_4(unknown) = Chi : total:m1546_2, partial:m1546_3 +# 1546| r1546_5(glval) = VariableAddress[#this] : +# 1546| m1546_6(glval) = InitializeParameter[#this] : &:r1546_5 +# 1546| r1546_7(glval) = Load[#this] : &:r1546_5, m1546_6 +# 1546| m1546_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1546_7 +# 1546| m1546_9(unknown) = Chi : total:m1546_4, partial:m1546_8 +# 1546| r1546_10(glval) = FieldAddress[r_alt] : r1546_7 +# 1546| r1546_11(StructuredBindingDataMemberStruct *) = CopyValue : r1546_7 +# 1546| r1546_12(glval) = FieldAddress[i] : r1546_11 +#-----| r0_1(int &) = CopyValue : r1546_12 +#-----| m0_2(int &) = Store[?] : &:r1546_10, r0_1 +#-----| m0_3(unknown) = Chi : total:m1546_9, partial:m0_2 +# 1546| v1546_13(void) = ReturnVoid : +# 1546| v1546_14(void) = AliasedUse : ~m0_3 +# 1546| v1546_15(void) = ExitFunction : + # 1550| void data_member_structured_binding() # 1550| Block 0 # 1550| v1550_1(void) = EnterFunction : @@ -12484,15 +12684,16 @@ ir.cpp: # 1550| m1550_4(unknown) = Chi : total:m1550_2, partial:m1550_3 # 1551| r1551_1(glval) = VariableAddress[s] : # 1551| m1551_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1551_1 -# 1551| r1551_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1551| v1551_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1551_3, this:r1551_1 -# 1551| m1551_5(unknown) = ^CallSideEffect : ~m1550_4 -# 1551| m1551_6(unknown) = Chi : total:m1550_4, partial:m1551_5 -# 1551| m1551_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1551_1 -# 1551| m1551_8(StructuredBindingDataMemberStruct) = Chi : total:m1551_2, partial:m1551_7 +# 1551| m1551_3(unknown) = Chi : total:m1550_4, partial:m1551_2 +# 1551| r1551_4(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1551| v1551_5(void) = Call[StructuredBindingDataMemberStruct] : func:r1551_4, this:r1551_1 +# 1551| m1551_6(unknown) = ^CallSideEffect : ~m1551_3 +# 1551| m1551_7(unknown) = Chi : total:m1551_3, partial:m1551_6 +# 1551| m1551_8(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1551_1 +# 1551| m1551_9(unknown) = Chi : total:m1551_7, partial:m1551_8 # 1554| r1554_1(glval) = VariableAddress[(unnamed local variable)] : # 1554| r1554_2(glval) = VariableAddress[s] : -# 1554| r1554_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1554_2, m1551_8 +# 1554| r1554_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1554_2, ~m1551_9 # 1554| m1554_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1554_1, r1554_3 # 1554| r1554_5(glval) = VariableAddress[i] : # 1554| r1554_6(glval) = VariableAddress[(unnamed local variable)] : @@ -12549,7 +12750,7 @@ ir.cpp: # 1558| r1558_2(glval) = VariableAddress[r] : # 1558| r1558_3(int &) = Load[r] : &:r1558_2, m1554_22 # 1558| m1558_4(int) = Store[?] : &:r1558_3, r1558_1 -# 1558| m1558_5(unknown) = Chi : total:m1551_6, partial:m1558_4 +# 1558| m1558_5(unknown) = Chi : total:m1551_9, partial:m1558_4 # 1559| r1559_1(int) = Constant[6] : # 1559| r1559_2(glval) = VariableAddress[p] : # 1559| r1559_3(int *&) = Load[p] : &:r1559_2, m1554_26 @@ -12574,7 +12775,7 @@ ir.cpp: # 1562| m1562_5(int) = Store[w] : &:r1562_1, r1562_4 # 1566| r1566_1(glval) = VariableAddress[unnamed_local_variable] : # 1566| r1566_2(glval) = VariableAddress[s] : -# 1566| r1566_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1566_2, m1551_8 +# 1566| r1566_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1566_2, ~m1559_7 # 1566| m1566_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1566_1, r1566_3 # 1567| r1567_1(glval) = VariableAddress[i] : # 1567| r1567_2(glval) = VariableAddress[unnamed_local_variable] : @@ -12652,19 +12853,41 @@ ir.cpp: # 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() # 1590| Block 0 -# 1590| v1590_1(void) = EnterFunction : -# 1590| m1590_2(unknown) = AliasedDefinition : -# 1590| m1590_3(unknown) = InitializeNonLocal : -# 1590| m1590_4(unknown) = Chi : total:m1590_2, partial:m1590_3 -# 1590| r1590_5(glval) = VariableAddress[#this] : -# 1590| m1590_6(glval) = InitializeParameter[#this] : &:r1590_5 -# 1590| r1590_7(glval) = Load[#this] : &:r1590_5, m1590_6 -# 1590| m1590_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_7 -# 1590| v1590_9(void) = NoOp : -# 1590| v1590_10(void) = ReturnIndirection[#this] : &:r1590_7, m1590_8 -# 1590| v1590_11(void) = ReturnVoid : -# 1590| v1590_12(void) = AliasedUse : m1590_3 -# 1590| v1590_13(void) = ExitFunction : +# 1590| v1590_1(void) = EnterFunction : +# 1590| m1590_2(unknown) = AliasedDefinition : +# 1590| m1590_3(unknown) = InitializeNonLocal : +# 1590| m1590_4(unknown) = Chi : total:m1590_2, partial:m1590_3 +# 1590| r1590_5(glval) = VariableAddress[#this] : +# 1590| m1590_6(glval) = InitializeParameter[#this] : &:r1590_5 +# 1590| r1590_7(glval) = Load[#this] : &:r1590_5, m1590_6 +# 1590| m1590_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_7 +# 1590| m1590_9(unknown) = Chi : total:m1590_4, partial:m1590_8 +# 1590| r1590_10(glval) = FunctionAddress[i] : +# 1590| v1590_11(void) = Call[i] : func:r1590_10, this:r1590_7 +# 1590| m1590_12(unknown) = ^CallSideEffect : ~m1590_9 +# 1590| m1590_13(unknown) = Chi : total:m1590_9, partial:m1590_12 +# 1590| v1590_14(void) = ^IndirectReadSideEffect[-1] : &:r1590_7, ~m1590_13 +# 1590| m1590_15(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1590_7 +# 1590| m1590_16(unknown) = Chi : total:m1590_13, partial:m1590_15 +# 1590| r1590_17(glval) = FunctionAddress[d] : +# 1590| v1590_18(void) = Call[d] : func:r1590_17, this:r1590_7 +# 1590| m1590_19(unknown) = ^CallSideEffect : ~m1590_16 +# 1590| m1590_20(unknown) = Chi : total:m1590_16, partial:m1590_19 +# 1590| v1590_21(void) = ^IndirectReadSideEffect[-1] : &:r1590_7, ~m1590_20 +# 1590| m1590_22(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1590_7 +# 1590| m1590_23(unknown) = Chi : total:m1590_20, partial:m1590_22 +# 1590| r1590_24(glval) = FunctionAddress[r] : +# 1590| v1590_25(void) = Call[r] : func:r1590_24, this:r1590_7 +# 1590| m1590_26(unknown) = ^CallSideEffect : ~m1590_23 +# 1590| m1590_27(unknown) = Chi : total:m1590_23, partial:m1590_26 +# 1590| v1590_28(void) = ^IndirectReadSideEffect[-1] : &:r1590_7, ~m1590_27 +# 1590| m1590_29(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1590_7 +# 1590| m1590_30(unknown) = Chi : total:m1590_27, partial:m1590_29 +# 1590| v1590_31(void) = NoOp : +# 1590| v1590_32(void) = ReturnIndirection[#this] : &:r1590_7, ~m1590_30 +# 1590| v1590_33(void) = ReturnVoid : +# 1590| v1590_34(void) = AliasedUse : ~m1590_30 +# 1590| v1590_35(void) = ExitFunction : # 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) # 1590| Block 0 @@ -12711,6 +12934,63 @@ ir.cpp: # 1590| v1590_36(void) = AliasedUse : m1590_3 # 1590| v1590_37(void) = ExitFunction : +# 1591| int StructuredBindingTupleRefGet::i +# 1591| Block 0 +# 1591| v1591_1(void) = EnterFunction : +# 1591| m1591_2(unknown) = AliasedDefinition : +# 1591| m1591_3(unknown) = InitializeNonLocal : +# 1591| m1591_4(unknown) = Chi : total:m1591_2, partial:m1591_3 +# 1591| r1591_5(glval) = VariableAddress[#this] : +# 1591| m1591_6(glval) = InitializeParameter[#this] : &:r1591_5 +# 1591| r1591_7(glval) = Load[#this] : &:r1591_5, m1591_6 +# 1591| m1591_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1591_7 +# 1591| r1591_9(glval) = FieldAddress[i] : r1591_7 +# 1591| r1591_10(int) = Constant[1] : +# 1591| m1591_11(int) = Store[?] : &:r1591_9, r1591_10 +# 1591| m1591_12(unknown) = Chi : total:m1591_8, partial:m1591_11 +# 1591| v1591_13(void) = ReturnVoid : +# 1591| v1591_14(void) = AliasedUse : m1591_3 +# 1591| v1591_15(void) = ExitFunction : + +# 1592| double StructuredBindingTupleRefGet::d +# 1592| Block 0 +# 1592| v1592_1(void) = EnterFunction : +# 1592| m1592_2(unknown) = AliasedDefinition : +# 1592| m1592_3(unknown) = InitializeNonLocal : +# 1592| m1592_4(unknown) = Chi : total:m1592_2, partial:m1592_3 +# 1592| r1592_5(glval) = VariableAddress[#this] : +# 1592| m1592_6(glval) = InitializeParameter[#this] : &:r1592_5 +# 1592| r1592_7(glval) = Load[#this] : &:r1592_5, m1592_6 +# 1592| m1592_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1592_7 +# 1592| r1592_9(glval) = FieldAddress[d] : r1592_7 +# 1592| r1592_10(double) = Constant[2.200000000000000178] : +# 1592| m1592_11(double) = Store[?] : &:r1592_9, r1592_10 +# 1592| m1592_12(unknown) = Chi : total:m1592_8, partial:m1592_11 +# 1592| v1592_13(void) = ReturnVoid : +# 1592| v1592_14(void) = AliasedUse : m1592_3 +# 1592| v1592_15(void) = ExitFunction : + +# 1593| int& StructuredBindingTupleRefGet::r +# 1593| Block 0 +# 1593| v1593_1(void) = EnterFunction : +# 1593| m1593_2(unknown) = AliasedDefinition : +# 1593| m1593_3(unknown) = InitializeNonLocal : +# 1593| m1593_4(unknown) = Chi : total:m1593_2, partial:m1593_3 +# 1593| r1593_5(glval) = VariableAddress[#this] : +# 1593| m1593_6(glval) = InitializeParameter[#this] : &:r1593_5 +# 1593| r1593_7(glval) = Load[#this] : &:r1593_5, m1593_6 +# 1593| m1593_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1593_7 +# 1593| m1593_9(unknown) = Chi : total:m1593_4, partial:m1593_8 +# 1593| r1593_10(glval) = FieldAddress[r] : r1593_7 +# 1593| r1593_11(StructuredBindingTupleRefGet *) = CopyValue : r1593_7 +# 1593| r1593_12(glval) = FieldAddress[i] : r1593_11 +#-----| r0_1(int &) = CopyValue : r1593_12 +#-----| m0_2(int &) = Store[?] : &:r1593_10, r0_1 +#-----| m0_3(unknown) = Chi : total:m1593_9, partial:m0_2 +# 1593| v1593_13(void) = ReturnVoid : +# 1593| v1593_14(void) = AliasedUse : ~m0_3 +# 1593| v1593_15(void) = ExitFunction : + # 1618| std::tuple_element::type& StructuredBindingTupleRefGet::get() # 1618| Block 0 # 1618| v1618_1(void) = EnterFunction : @@ -12787,22 +13067,23 @@ ir.cpp: # 1630| m1630_4(unknown) = Chi : total:m1630_2, partial:m1630_3 # 1631| r1631_1(glval) = VariableAddress[t] : # 1631| m1631_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1631_1 -# 1631| r1631_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1631| v1631_4(void) = Call[StructuredBindingTupleRefGet] : func:r1631_3, this:r1631_1 -# 1631| m1631_5(unknown) = ^CallSideEffect : ~m1630_4 -# 1631| m1631_6(unknown) = Chi : total:m1630_4, partial:m1631_5 -# 1631| m1631_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1 -# 1631| m1631_8(StructuredBindingTupleRefGet) = Chi : total:m1631_2, partial:m1631_7 +# 1631| m1631_3(unknown) = Chi : total:m1630_4, partial:m1631_2 +# 1631| r1631_4(glval) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1631| v1631_5(void) = Call[StructuredBindingTupleRefGet] : func:r1631_4, this:r1631_1 +# 1631| m1631_6(unknown) = ^CallSideEffect : ~m1631_3 +# 1631| m1631_7(unknown) = Chi : total:m1631_3, partial:m1631_6 +# 1631| m1631_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1 +# 1631| m1631_9(unknown) = Chi : total:m1631_7, partial:m1631_8 # 1634| r1634_1(glval) = VariableAddress[(unnamed local variable)] : # 1634| r1634_2(glval) = VariableAddress[t] : -# 1634| r1634_3(StructuredBindingTupleRefGet) = Load[t] : &:r1634_2, m1631_8 +# 1634| r1634_3(StructuredBindingTupleRefGet) = Load[t] : &:r1634_2, ~m1631_9 # 1634| m1634_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1634_1, r1634_3 # 1634| r1634_5(glval) = VariableAddress[i] : # 1634| r1634_6(glval) = VariableAddress[(unnamed local variable)] : # 1634| r1634_7(glval) = FunctionAddress[get] : # 1634| r1634_8(int &) = Call[get] : func:r1634_7, this:r1634_6 -# 1634| m1634_9(unknown) = ^CallSideEffect : ~m1631_6 -# 1634| m1634_10(unknown) = Chi : total:m1631_6, partial:m1634_9 +# 1634| m1634_9(unknown) = ^CallSideEffect : ~m1631_9 +# 1634| m1634_10(unknown) = Chi : total:m1631_9, partial:m1634_9 # 1634| v1634_11(void) = ^IndirectReadSideEffect[-1] : &:r1634_6, m1634_4 # 1634| m1634_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_6 # 1634| m1634_13(StructuredBindingTupleRefGet) = Chi : total:m1634_4, partial:m1634_12 @@ -12869,7 +13150,7 @@ ir.cpp: # 1640| m1640_5(int) = Store[w] : &:r1640_1, r1640_4 # 1644| r1644_1(glval) = VariableAddress[unnamed_local_variable] : # 1644| r1644_2(glval) = VariableAddress[t] : -# 1644| r1644_3(StructuredBindingTupleRefGet) = Load[t] : &:r1644_2, m1631_8 +# 1644| r1644_3(StructuredBindingTupleRefGet) = Load[t] : &:r1644_2, ~m1638_6 # 1644| m1644_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1644_1, r1644_3 # 1645| r1645_1(glval) = VariableAddress[i] : # 1645| r1645_2(glval) = VariableAddress[unnamed_local_variable] : @@ -12948,19 +13229,73 @@ ir.cpp: # 1657| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() # 1657| Block 0 -# 1657| v1657_1(void) = EnterFunction : -# 1657| m1657_2(unknown) = AliasedDefinition : -# 1657| m1657_3(unknown) = InitializeNonLocal : -# 1657| m1657_4(unknown) = Chi : total:m1657_2, partial:m1657_3 -# 1657| r1657_5(glval) = VariableAddress[#this] : -# 1657| m1657_6(glval) = InitializeParameter[#this] : &:r1657_5 -# 1657| r1657_7(glval) = Load[#this] : &:r1657_5, m1657_6 -# 1657| m1657_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_7 -# 1657| v1657_9(void) = NoOp : -# 1657| v1657_10(void) = ReturnIndirection[#this] : &:r1657_7, m1657_8 -# 1657| v1657_11(void) = ReturnVoid : -# 1657| v1657_12(void) = AliasedUse : m1657_3 -# 1657| v1657_13(void) = ExitFunction : +# 1657| v1657_1(void) = EnterFunction : +# 1657| m1657_2(unknown) = AliasedDefinition : +# 1657| m1657_3(unknown) = InitializeNonLocal : +# 1657| m1657_4(unknown) = Chi : total:m1657_2, partial:m1657_3 +# 1657| r1657_5(glval) = VariableAddress[#this] : +# 1657| m1657_6(glval) = InitializeParameter[#this] : &:r1657_5 +# 1657| r1657_7(glval) = Load[#this] : &:r1657_5, m1657_6 +# 1657| m1657_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_7 +# 1657| m1657_9(unknown) = Chi : total:m1657_4, partial:m1657_8 +# 1657| r1657_10(glval) = FunctionAddress[i] : +# 1657| v1657_11(void) = Call[i] : func:r1657_10, this:r1657_7 +# 1657| m1657_12(unknown) = ^CallSideEffect : ~m1657_9 +# 1657| m1657_13(unknown) = Chi : total:m1657_9, partial:m1657_12 +# 1657| v1657_14(void) = ^IndirectReadSideEffect[-1] : &:r1657_7, ~m1657_13 +# 1657| m1657_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1657_7 +# 1657| m1657_16(unknown) = Chi : total:m1657_13, partial:m1657_15 +# 1657| r1657_17(glval) = FunctionAddress[r] : +# 1657| v1657_18(void) = Call[r] : func:r1657_17, this:r1657_7 +# 1657| m1657_19(unknown) = ^CallSideEffect : ~m1657_16 +# 1657| m1657_20(unknown) = Chi : total:m1657_16, partial:m1657_19 +# 1657| v1657_21(void) = ^IndirectReadSideEffect[-1] : &:r1657_7, ~m1657_20 +# 1657| m1657_22(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1657_7 +# 1657| m1657_23(unknown) = Chi : total:m1657_20, partial:m1657_22 +# 1657| v1657_24(void) = NoOp : +# 1657| v1657_25(void) = ReturnIndirection[#this] : &:r1657_7, ~m1657_23 +# 1657| v1657_26(void) = ReturnVoid : +# 1657| v1657_27(void) = AliasedUse : ~m1657_23 +# 1657| v1657_28(void) = ExitFunction : + +# 1658| int StructuredBindingTupleNoRefGet::i +# 1658| Block 0 +# 1658| v1658_1(void) = EnterFunction : +# 1658| m1658_2(unknown) = AliasedDefinition : +# 1658| m1658_3(unknown) = InitializeNonLocal : +# 1658| m1658_4(unknown) = Chi : total:m1658_2, partial:m1658_3 +# 1658| r1658_5(glval) = VariableAddress[#this] : +# 1658| m1658_6(glval) = InitializeParameter[#this] : &:r1658_5 +# 1658| r1658_7(glval) = Load[#this] : &:r1658_5, m1658_6 +# 1658| m1658_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1658_7 +# 1658| r1658_9(glval) = FieldAddress[i] : r1658_7 +# 1658| r1658_10(int) = Constant[1] : +# 1658| m1658_11(int) = Store[?] : &:r1658_9, r1658_10 +# 1658| m1658_12(unknown) = Chi : total:m1658_8, partial:m1658_11 +# 1658| v1658_13(void) = ReturnVoid : +# 1658| v1658_14(void) = AliasedUse : m1658_3 +# 1658| v1658_15(void) = ExitFunction : + +# 1659| int& StructuredBindingTupleNoRefGet::r +# 1659| Block 0 +# 1659| v1659_1(void) = EnterFunction : +# 1659| m1659_2(unknown) = AliasedDefinition : +# 1659| m1659_3(unknown) = InitializeNonLocal : +# 1659| m1659_4(unknown) = Chi : total:m1659_2, partial:m1659_3 +# 1659| r1659_5(glval) = VariableAddress[#this] : +# 1659| m1659_6(glval) = InitializeParameter[#this] : &:r1659_5 +# 1659| r1659_7(glval) = Load[#this] : &:r1659_5, m1659_6 +# 1659| m1659_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1659_7 +# 1659| m1659_9(unknown) = Chi : total:m1659_4, partial:m1659_8 +# 1659| r1659_10(glval) = FieldAddress[r] : r1659_7 +# 1659| r1659_11(StructuredBindingTupleNoRefGet *) = CopyValue : r1659_7 +# 1659| r1659_12(glval) = FieldAddress[i] : r1659_11 +#-----| r0_1(int &) = CopyValue : r1659_12 +#-----| m0_2(int &) = Store[?] : &:r1659_10, r0_1 +#-----| m0_3(unknown) = Chi : total:m1659_9, partial:m0_2 +# 1659| v1659_13(void) = ReturnVoid : +# 1659| v1659_14(void) = AliasedUse : ~m0_3 +# 1659| v1659_15(void) = ExitFunction : # 1684| std::tuple_element::type StructuredBindingTupleNoRefGet::get() # 1684| Block 0 @@ -13038,12 +13373,13 @@ ir.cpp: # 1696| m1696_4(unknown) = Chi : total:m1696_2, partial:m1696_3 # 1697| r1697_1(glval) = VariableAddress[t] : # 1697| m1697_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1697_1 -# 1697| r1697_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1697| v1697_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1697_3, this:r1697_1 -# 1697| m1697_5(unknown) = ^CallSideEffect : ~m1696_4 -# 1697| m1697_6(unknown) = Chi : total:m1696_4, partial:m1697_5 -# 1697| m1697_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1 -# 1697| m1697_8(StructuredBindingTupleNoRefGet) = Chi : total:m1697_2, partial:m1697_7 +# 1697| m1697_3(unknown) = Chi : total:m1696_4, partial:m1697_2 +# 1697| r1697_4(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1697| v1697_5(void) = Call[StructuredBindingTupleNoRefGet] : func:r1697_4, this:r1697_1 +# 1697| m1697_6(unknown) = ^CallSideEffect : ~m1697_3 +# 1697| m1697_7(unknown) = Chi : total:m1697_3, partial:m1697_6 +# 1697| m1697_8(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1 +# 1697| m1697_9(unknown) = Chi : total:m1697_7, partial:m1697_8 # 1700| r1700_1(glval) = VariableAddress[(unnamed local variable)] : # 1700| r1700_2(glval) = VariableAddress[t] : # 1700| r1700_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1700_2 @@ -13055,11 +13391,11 @@ ir.cpp: # 1700| r1700_9(glval) = CopyValue : r1700_8 # 1700| r1700_10(glval) = FunctionAddress[get] : # 1700| r1700_11(int) = Call[get] : func:r1700_10, this:r1700_9 -# 1700| m1700_12(unknown) = ^CallSideEffect : ~m1697_6 -# 1700| m1700_13(unknown) = Chi : total:m1697_6, partial:m1700_12 -# 1700| v1700_14(void) = ^IndirectReadSideEffect[-1] : &:r1700_9, m1697_8 +# 1700| m1700_12(unknown) = ^CallSideEffect : ~m1697_9 +# 1700| m1700_13(unknown) = Chi : total:m1697_9, partial:m1700_12 +# 1700| v1700_14(void) = ^IndirectReadSideEffect[-1] : &:r1700_9, ~m1700_13 # 1700| m1700_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_9 -# 1700| m1700_16(StructuredBindingTupleNoRefGet) = Chi : total:m1697_8, partial:m1700_15 +# 1700| m1700_16(unknown) = Chi : total:m1700_13, partial:m1700_15 # 1700| m1700_17(int) = Store[#temp1700:16] : &:r1700_6, r1700_11 # 1700| r1700_18(int &) = CopyValue : r1700_6 # 1700| m1700_19(int &&) = Store[i] : &:r1700_5, r1700_18 @@ -13069,11 +13405,11 @@ ir.cpp: # 1700| r1700_23(glval) = CopyValue : r1700_22 # 1700| r1700_24(glval) = FunctionAddress[get] : # 1700| r1700_25(int &) = Call[get] : func:r1700_24, this:r1700_23 -# 1700| m1700_26(unknown) = ^CallSideEffect : ~m1700_13 -# 1700| m1700_27(unknown) = Chi : total:m1700_13, partial:m1700_26 -# 1700| v1700_28(void) = ^IndirectReadSideEffect[-1] : &:r1700_23, m1700_16 +# 1700| m1700_26(unknown) = ^CallSideEffect : ~m1700_16 +# 1700| m1700_27(unknown) = Chi : total:m1700_16, partial:m1700_26 +# 1700| v1700_28(void) = ^IndirectReadSideEffect[-1] : &:r1700_23, ~m1700_27 # 1700| m1700_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_23 -# 1700| m1700_30(StructuredBindingTupleNoRefGet) = Chi : total:m1700_16, partial:m1700_29 +# 1700| m1700_30(unknown) = Chi : total:m1700_27, partial:m1700_29 # 1700| r1700_31(glval) = CopyValue : r1700_25 # 1700| r1700_32(int &) = CopyValue : r1700_31 # 1700| m1700_33(int &) = Store[r] : &:r1700_20, r1700_32 @@ -13083,11 +13419,11 @@ ir.cpp: # 1700| r1700_37(glval) = CopyValue : r1700_36 # 1700| r1700_38(glval) = FunctionAddress[get] : # 1700| r1700_39(int &&) = Call[get] : func:r1700_38, this:r1700_37 -# 1700| m1700_40(unknown) = ^CallSideEffect : ~m1700_27 -# 1700| m1700_41(unknown) = Chi : total:m1700_27, partial:m1700_40 -# 1700| v1700_42(void) = ^IndirectReadSideEffect[-1] : &:r1700_37, m1700_30 +# 1700| m1700_40(unknown) = ^CallSideEffect : ~m1700_30 +# 1700| m1700_41(unknown) = Chi : total:m1700_30, partial:m1700_40 +# 1700| v1700_42(void) = ^IndirectReadSideEffect[-1] : &:r1700_37, ~m1700_41 # 1700| m1700_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_37 -# 1700| m1700_44(StructuredBindingTupleNoRefGet) = Chi : total:m1700_30, partial:m1700_43 +# 1700| m1700_44(unknown) = Chi : total:m1700_41, partial:m1700_43 # 1700| r1700_45(glval) = CopyValue : r1700_39 # 1700| r1700_46(int &) = CopyValue : r1700_45 # 1700| m1700_47(int &&) = Store[rv] : &:r1700_34, r1700_46 @@ -13112,7 +13448,7 @@ ir.cpp: # 1704| r1704_3(int &) = Load[r] : &:r1704_2, m1700_33 # 1704| r1704_4(glval) = CopyValue : r1704_3 # 1704| m1704_5(int) = Store[?] : &:r1704_4, r1704_1 -# 1704| m1704_6(unknown) = Chi : total:m1700_41, partial:m1704_5 +# 1704| m1704_6(unknown) = Chi : total:m1700_44, partial:m1704_5 # 1705| r1705_1(glval) = VariableAddress[rr] : # 1705| r1705_2(glval) = VariableAddress[r] : # 1705| r1705_3(int &) = Load[r] : &:r1705_2, m1700_33 @@ -13137,9 +13473,9 @@ ir.cpp: # 1711| r1711_7(int) = Call[get] : func:r1711_6, this:r1711_5 # 1711| m1711_8(unknown) = ^CallSideEffect : ~m1704_6 # 1711| m1711_9(unknown) = Chi : total:m1704_6, partial:m1711_8 -# 1711| v1711_10(void) = ^IndirectReadSideEffect[-1] : &:r1711_5, m1700_44 +# 1711| v1711_10(void) = ^IndirectReadSideEffect[-1] : &:r1711_5, ~m1711_9 # 1711| m1711_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_5 -# 1711| m1711_12(StructuredBindingTupleNoRefGet) = Chi : total:m1700_44, partial:m1711_11 +# 1711| m1711_12(unknown) = Chi : total:m1711_9, partial:m1711_11 # 1711| m1711_13(int) = Store[#temp1711:20] : &:r1711_2, r1711_7 # 1711| r1711_14(int &) = CopyValue : r1711_2 # 1711| m1711_15(int &&) = Store[i] : &:r1711_1, r1711_14 @@ -13149,11 +13485,11 @@ ir.cpp: # 1712| r1712_4(glval) = CopyValue : r1712_3 # 1712| r1712_5(glval) = FunctionAddress[get] : # 1712| r1712_6(int &) = Call[get] : func:r1712_5, this:r1712_4 -# 1712| m1712_7(unknown) = ^CallSideEffect : ~m1711_9 -# 1712| m1712_8(unknown) = Chi : total:m1711_9, partial:m1712_7 -# 1712| v1712_9(void) = ^IndirectReadSideEffect[-1] : &:r1712_4, m1711_12 +# 1712| m1712_7(unknown) = ^CallSideEffect : ~m1711_12 +# 1712| m1712_8(unknown) = Chi : total:m1711_12, partial:m1712_7 +# 1712| v1712_9(void) = ^IndirectReadSideEffect[-1] : &:r1712_4, ~m1712_8 # 1712| m1712_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1712_4 -# 1712| m1712_11(StructuredBindingTupleNoRefGet) = Chi : total:m1711_12, partial:m1712_10 +# 1712| m1712_11(unknown) = Chi : total:m1712_8, partial:m1712_10 # 1712| r1712_12(glval) = CopyValue : r1712_6 # 1712| r1712_13(int &) = CopyValue : r1712_12 # 1712| m1712_14(int &) = Store[r] : &:r1712_1, r1712_13 @@ -13163,11 +13499,11 @@ ir.cpp: # 1713| r1713_4(glval) = CopyValue : r1713_3 # 1713| r1713_5(glval) = FunctionAddress[get] : # 1713| r1713_6(int &&) = Call[get] : func:r1713_5, this:r1713_4 -# 1713| m1713_7(unknown) = ^CallSideEffect : ~m1712_8 -# 1713| m1713_8(unknown) = Chi : total:m1712_8, partial:m1713_7 -# 1713| v1713_9(void) = ^IndirectReadSideEffect[-1] : &:r1713_4, m1712_11 +# 1713| m1713_7(unknown) = ^CallSideEffect : ~m1712_11 +# 1713| m1713_8(unknown) = Chi : total:m1712_11, partial:m1713_7 +# 1713| v1713_9(void) = ^IndirectReadSideEffect[-1] : &:r1713_4, ~m1713_8 # 1713| m1713_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1713_4 -# 1713| m1713_11(StructuredBindingTupleNoRefGet) = Chi : total:m1712_11, partial:m1713_10 +# 1713| m1713_11(unknown) = Chi : total:m1713_8, partial:m1713_10 # 1713| r1713_12(glval) = CopyValue : r1713_6 # 1713| r1713_13(int &) = CopyValue : r1713_12 # 1713| m1713_14(int &&) = Store[rv] : &:r1713_1, r1713_13 @@ -13192,7 +13528,7 @@ ir.cpp: # 1717| r1717_3(int &) = Load[r] : &:r1717_2, m1712_14 # 1717| r1717_4(glval) = CopyValue : r1717_3 # 1717| m1717_5(int) = Store[?] : &:r1717_4, r1717_1 -# 1717| m1717_6(unknown) = Chi : total:m1713_8, partial:m1717_5 +# 1717| m1717_6(unknown) = Chi : total:m1713_11, partial:m1717_5 # 1718| r1718_1(glval) = VariableAddress[rr] : # 1718| r1718_2(glval) = VariableAddress[r] : # 1718| r1718_3(int &) = Load[r] : &:r1718_2, m1712_14 @@ -21066,6 +21402,376 @@ ir.cpp: # 2867| v2867_14(void) = ReturnVoid : #-----| Goto -> Block 1 +# 2890| int StructInit::i +# 2890| Block 0 +# 2890| v2890_1(void) = EnterFunction : +# 2890| m2890_2(unknown) = AliasedDefinition : +# 2890| m2890_3(unknown) = InitializeNonLocal : +# 2890| m2890_4(unknown) = Chi : total:m2890_2, partial:m2890_3 +# 2890| r2890_5(glval) = VariableAddress[#this] : +# 2890| m2890_6(glval) = InitializeParameter[#this] : &:r2890_5 +# 2890| r2890_7(glval) = Load[#this] : &:r2890_5, m2890_6 +# 2890| m2890_8(StructInit) = InitializeIndirection[#this] : &:r2890_7 +# 2890| r2890_9(glval) = FieldAddress[i] : r2890_7 +# 2890| r2890_10(int) = Constant[42] : +# 2890| m2890_11(int) = Store[?] : &:r2890_9, r2890_10 +# 2890| m2890_12(unknown) = Chi : total:m2890_8, partial:m2890_11 +# 2890| v2890_13(void) = ReturnVoid : +# 2890| v2890_14(void) = AliasedUse : m2890_3 +# 2890| v2890_15(void) = ExitFunction : + +# 2891| int StructInit::j +# 2891| Block 0 +# 2891| v2891_1(void) = EnterFunction : +# 2891| m2891_2(unknown) = AliasedDefinition : +# 2891| m2891_3(unknown) = InitializeNonLocal : +# 2891| m2891_4(unknown) = Chi : total:m2891_2, partial:m2891_3 +# 2891| r2891_5(glval) = VariableAddress[#this] : +# 2891| m2891_6(glval) = InitializeParameter[#this] : &:r2891_5 +# 2891| r2891_7(glval) = Load[#this] : &:r2891_5, m2891_6 +# 2891| m2891_8(StructInit) = InitializeIndirection[#this] : &:r2891_7 +# 2891| r2891_9(glval) = FieldAddress[j] : r2891_7 +# 2891| r2891_10(int) = Constant[42] : +# 2891| m2891_11(int) = Store[?] : &:r2891_9, r2891_10 +# 2891| m2891_12(unknown) = Chi : total:m2891_8, partial:m2891_11 +# 2891| v2891_13(void) = ReturnVoid : +# 2891| v2891_14(void) = AliasedUse : m2891_3 +# 2891| v2891_15(void) = ExitFunction : + +# 2892| int StructInit::k +# 2892| Block 0 +# 2892| v2892_1(void) = EnterFunction : +# 2892| m2892_2(unknown) = AliasedDefinition : +# 2892| m2892_3(unknown) = InitializeNonLocal : +# 2892| m2892_4(unknown) = Chi : total:m2892_2, partial:m2892_3 +# 2892| r2892_5(glval) = VariableAddress[#this] : +# 2892| m2892_6(glval) = InitializeParameter[#this] : &:r2892_5 +# 2892| r2892_7(glval) = Load[#this] : &:r2892_5, m2892_6 +# 2892| m2892_8(StructInit) = InitializeIndirection[#this] : &:r2892_7 +# 2892| r2892_9(glval) = FieldAddress[k] : r2892_7 +# 2892| r2892_10(int) = Constant[42] : +# 2892| m2892_11(int) = Store[?] : &:r2892_9, r2892_10 +# 2892| m2892_12(unknown) = Chi : total:m2892_8, partial:m2892_11 +# 2892| v2892_13(void) = ReturnVoid : +# 2892| v2892_14(void) = AliasedUse : m2892_3 +# 2892| v2892_15(void) = ExitFunction : + +# 2893| int StructInit::l +# 2893| Block 0 +# 2893| v2893_1(void) = EnterFunction : +# 2893| m2893_2(unknown) = AliasedDefinition : +# 2893| m2893_3(unknown) = InitializeNonLocal : +# 2893| m2893_4(unknown) = Chi : total:m2893_2, partial:m2893_3 +# 2893| r2893_5(glval) = VariableAddress[#this] : +# 2893| m2893_6(glval) = InitializeParameter[#this] : &:r2893_5 +# 2893| r2893_7(glval) = Load[#this] : &:r2893_5, m2893_6 +# 2893| m2893_8(StructInit) = InitializeIndirection[#this] : &:r2893_7 +# 2893| r2893_9(glval) = FieldAddress[l] : r2893_7 +# 2893| r2893_10(StructInit *) = CopyValue : r2893_7 +# 2893| r2893_11(glval) = FieldAddress[k] : r2893_10 +# 2893| r2893_12(int) = Load[?] : &:r2893_11, ~m2893_8 +# 2893| m2893_13(int) = Store[?] : &:r2893_9, r2893_12 +# 2893| m2893_14(unknown) = Chi : total:m2893_8, partial:m2893_13 +# 2893| v2893_15(void) = ReturnVoid : +# 2893| v2893_16(void) = AliasedUse : m2893_3 +# 2893| v2893_17(void) = ExitFunction : + +# 2894| int StructInit::m +# 2894| Block 0 +# 2894| v2894_1(void) = EnterFunction : +# 2894| m2894_2(unknown) = AliasedDefinition : +# 2894| m2894_3(unknown) = InitializeNonLocal : +# 2894| m2894_4(unknown) = Chi : total:m2894_2, partial:m2894_3 +# 2894| r2894_5(glval) = VariableAddress[#this] : +# 2894| m2894_6(glval) = InitializeParameter[#this] : &:r2894_5 +# 2894| r2894_7(glval) = Load[#this] : &:r2894_5, m2894_6 +# 2894| m2894_8(StructInit) = InitializeIndirection[#this] : &:r2894_7 +# 2894| r2894_9(glval) = FieldAddress[m] : r2894_7 +# 2894| r2894_10(StructInit *) = CopyValue : r2894_7 +# 2894| r2894_11(glval) = FunctionAddress[get_val] : +# 2894| r2894_12(int) = Call[get_val] : func:r2894_11, this:r2894_10 +# 2894| m2894_13(unknown) = ^CallSideEffect : ~m2894_4 +# 2894| m2894_14(unknown) = Chi : total:m2894_4, partial:m2894_13 +# 2894| v2894_15(void) = ^IndirectReadSideEffect[-1] : &:r2894_10, ~m2894_8 +# 2894| m2894_16(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2894_10 +# 2894| m2894_17(unknown) = Chi : total:m2894_8, partial:m2894_16 +# 2894| m2894_18(int) = Store[?] : &:r2894_9, r2894_12 +# 2894| m2894_19(unknown) = Chi : total:m2894_17, partial:m2894_18 +# 2894| v2894_20(void) = ReturnVoid : +# 2894| v2894_21(void) = AliasedUse : ~m2894_14 +# 2894| v2894_22(void) = ExitFunction : + +# 2895| int StructInit::n +# 2895| Block 0 +# 2895| v2895_1(void) = EnterFunction : +# 2895| m2895_2(unknown) = AliasedDefinition : +# 2895| m2895_3(unknown) = InitializeNonLocal : +# 2895| m2895_4(unknown) = Chi : total:m2895_2, partial:m2895_3 +# 2895| r2895_5(glval) = VariableAddress[#this] : +# 2895| m2895_6(glval) = InitializeParameter[#this] : &:r2895_5 +# 2895| r2895_7(glval) = Load[#this] : &:r2895_5, m2895_6 +# 2895| m2895_8(StructInit) = InitializeIndirection[#this] : &:r2895_7 +# 2895| r2895_9(glval) = FieldAddress[n] : r2895_7 +# 2895| r2895_10(int) = Constant[42] : +# 2895| m2895_11(int) = Store[?] : &:r2895_9, r2895_10 +# 2895| m2895_12(unknown) = Chi : total:m2895_8, partial:m2895_11 +# 2895| v2895_13(void) = ReturnVoid : +# 2895| v2895_14(void) = AliasedUse : m2895_3 +# 2895| v2895_15(void) = ExitFunction : + +# 2897| void StructInit::StructInit(int) +# 2897| Block 0 +# 2897| v2897_1(void) = EnterFunction : +# 2897| m2897_2(unknown) = AliasedDefinition : +# 2897| m2897_3(unknown) = InitializeNonLocal : +# 2897| m2897_4(unknown) = Chi : total:m2897_2, partial:m2897_3 +# 2897| r2897_5(glval) = VariableAddress[#this] : +# 2897| m2897_6(glval) = InitializeParameter[#this] : &:r2897_5 +# 2897| r2897_7(glval) = Load[#this] : &:r2897_5, m2897_6 +# 2897| m2897_8(StructInit) = InitializeIndirection[#this] : &:r2897_7 +# 2897| m2897_9(unknown) = Chi : total:m2897_4, partial:m2897_8 +# 2897| r2897_10(glval) = VariableAddress[j] : +# 2897| m2897_11(int) = InitializeParameter[j] : &:r2897_10 +# 2897| r2897_12(glval) = FunctionAddress[i] : +# 2897| v2897_13(void) = Call[i] : func:r2897_12, this:r2897_7 +# 2897| m2897_14(unknown) = ^CallSideEffect : ~m2897_9 +# 2897| m2897_15(unknown) = Chi : total:m2897_9, partial:m2897_14 +# 2897| v2897_16(void) = ^IndirectReadSideEffect[-1] : &:r2897_7, ~m2897_15 +# 2897| m2897_17(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_7 +# 2897| m2897_18(unknown) = Chi : total:m2897_15, partial:m2897_17 +# 2897| r2897_19(glval) = FieldAddress[j] : r2897_7 +# 2897| r2897_20(glval) = VariableAddress[j] : +# 2897| r2897_21(int) = Load[j] : &:r2897_20, m2897_11 +# 2897| m2897_22(int) = Store[?] : &:r2897_19, r2897_21 +# 2897| m2897_23(unknown) = Chi : total:m2897_18, partial:m2897_22 +# 2897| r2897_24(glval) = FunctionAddress[k] : +# 2897| v2897_25(void) = Call[k] : func:r2897_24, this:r2897_7 +# 2897| m2897_26(unknown) = ^CallSideEffect : ~m2897_23 +# 2897| m2897_27(unknown) = Chi : total:m2897_23, partial:m2897_26 +# 2897| v2897_28(void) = ^IndirectReadSideEffect[-1] : &:r2897_7, ~m2897_27 +# 2897| m2897_29(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_7 +# 2897| m2897_30(unknown) = Chi : total:m2897_27, partial:m2897_29 +# 2897| r2897_31(glval) = FunctionAddress[l] : +# 2897| v2897_32(void) = Call[l] : func:r2897_31, this:r2897_7 +# 2897| m2897_33(unknown) = ^CallSideEffect : ~m2897_30 +# 2897| m2897_34(unknown) = Chi : total:m2897_30, partial:m2897_33 +# 2897| v2897_35(void) = ^IndirectReadSideEffect[-1] : &:r2897_7, ~m2897_34 +# 2897| m2897_36(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_7 +# 2897| m2897_37(unknown) = Chi : total:m2897_34, partial:m2897_36 +# 2897| r2897_38(glval) = FunctionAddress[m] : +# 2897| v2897_39(void) = Call[m] : func:r2897_38, this:r2897_7 +# 2897| m2897_40(unknown) = ^CallSideEffect : ~m2897_37 +# 2897| m2897_41(unknown) = Chi : total:m2897_37, partial:m2897_40 +# 2897| v2897_42(void) = ^IndirectReadSideEffect[-1] : &:r2897_7, ~m2897_41 +# 2897| m2897_43(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_7 +# 2897| m2897_44(unknown) = Chi : total:m2897_41, partial:m2897_43 +# 2897| r2897_45(glval) = FieldAddress[n] : r2897_7 +# 2897| r2897_46(glval) = VariableAddress[#this] : +# 2897| r2897_47(StructInit *) = Load[#this] : &:r2897_46, m2897_6 +# 2897| r2897_48(glval) = FunctionAddress[get_val] : +# 2897| r2897_49(int) = Call[get_val] : func:r2897_48, this:r2897_47 +# 2897| m2897_50(unknown) = ^CallSideEffect : ~m2897_44 +# 2897| m2897_51(unknown) = Chi : total:m2897_44, partial:m2897_50 +# 2897| v2897_52(void) = ^IndirectReadSideEffect[-1] : &:r2897_47, ~m2897_51 +# 2897| m2897_53(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_47 +# 2897| m2897_54(unknown) = Chi : total:m2897_51, partial:m2897_53 +# 2897| m2897_55(int) = Store[?] : &:r2897_45, r2897_49 +# 2897| m2897_56(unknown) = Chi : total:m2897_54, partial:m2897_55 +# 2897| v2897_57(void) = NoOp : +# 2897| v2897_58(void) = ReturnIndirection[#this] : &:r2897_7, ~m2897_56 +# 2897| v2897_59(void) = ReturnVoid : +# 2897| v2897_60(void) = AliasedUse : ~m2897_56 +# 2897| v2897_61(void) = ExitFunction : + +# 2899| void StructInit::StructInit() +# 2899| Block 0 +# 2899| v2899_1(void) = EnterFunction : +# 2899| m2899_2(unknown) = AliasedDefinition : +# 2899| m2899_3(unknown) = InitializeNonLocal : +# 2899| m2899_4(unknown) = Chi : total:m2899_2, partial:m2899_3 +# 2899| r2899_5(glval) = VariableAddress[#this] : +# 2899| m2899_6(glval) = InitializeParameter[#this] : &:r2899_5 +# 2899| r2899_7(glval) = Load[#this] : &:r2899_5, m2899_6 +# 2899| m2899_8(StructInit) = InitializeIndirection[#this] : &:r2899_7 +# 2899| m2899_9(unknown) = Chi : total:m2899_4, partial:m2899_8 +# 2899| r2899_10(glval) = FieldAddress[i] : r2899_7 +# 2899| r2899_11(int) = Constant[41] : +# 2899| m2899_12(int) = Store[?] : &:r2899_10, r2899_11 +# 2899| m2899_13(unknown) = Chi : total:m2899_9, partial:m2899_12 +# 2899| r2899_14(glval) = FunctionAddress[j] : +# 2899| v2899_15(void) = Call[j] : func:r2899_14, this:r2899_7 +# 2899| m2899_16(unknown) = ^CallSideEffect : ~m2899_13 +# 2899| m2899_17(unknown) = Chi : total:m2899_13, partial:m2899_16 +# 2899| v2899_18(void) = ^IndirectReadSideEffect[-1] : &:r2899_7, ~m2899_17 +# 2899| m2899_19(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_7 +# 2899| m2899_20(unknown) = Chi : total:m2899_17, partial:m2899_19 +# 2899| r2899_21(glval) = FieldAddress[k] : r2899_7 +# 2899| r2899_22(int) = Constant[41] : +# 2899| m2899_23(int) = Store[?] : &:r2899_21, r2899_22 +# 2899| m2899_24(unknown) = Chi : total:m2899_20, partial:m2899_23 +# 2899| r2899_25(glval) = FunctionAddress[l] : +# 2899| v2899_26(void) = Call[l] : func:r2899_25, this:r2899_7 +# 2899| m2899_27(unknown) = ^CallSideEffect : ~m2899_24 +# 2899| m2899_28(unknown) = Chi : total:m2899_24, partial:m2899_27 +# 2899| v2899_29(void) = ^IndirectReadSideEffect[-1] : &:r2899_7, ~m2899_28 +# 2899| m2899_30(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_7 +# 2899| m2899_31(unknown) = Chi : total:m2899_28, partial:m2899_30 +# 2899| r2899_32(glval) = FunctionAddress[m] : +# 2899| v2899_33(void) = Call[m] : func:r2899_32, this:r2899_7 +# 2899| m2899_34(unknown) = ^CallSideEffect : ~m2899_31 +# 2899| m2899_35(unknown) = Chi : total:m2899_31, partial:m2899_34 +# 2899| v2899_36(void) = ^IndirectReadSideEffect[-1] : &:r2899_7, ~m2899_35 +# 2899| m2899_37(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_7 +# 2899| m2899_38(unknown) = Chi : total:m2899_35, partial:m2899_37 +# 2899| r2899_39(glval) = FunctionAddress[n] : +# 2899| v2899_40(void) = Call[n] : func:r2899_39, this:r2899_7 +# 2899| m2899_41(unknown) = ^CallSideEffect : ~m2899_38 +# 2899| m2899_42(unknown) = Chi : total:m2899_38, partial:m2899_41 +# 2899| v2899_43(void) = ^IndirectReadSideEffect[-1] : &:r2899_7, ~m2899_42 +# 2899| m2899_44(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_7 +# 2899| m2899_45(unknown) = Chi : total:m2899_42, partial:m2899_44 +# 2899| v2899_46(void) = NoOp : +# 2899| v2899_47(void) = ReturnIndirection[#this] : &:r2899_7, ~m2899_45 +# 2899| v2899_48(void) = ReturnVoid : +# 2899| v2899_49(void) = AliasedUse : ~m2899_45 +# 2899| v2899_50(void) = ExitFunction : + +# 2901| int StructInit::get_val() +# 2901| Block 0 +# 2901| v2901_1(void) = EnterFunction : +# 2901| m2901_2(unknown) = AliasedDefinition : +# 2901| m2901_3(unknown) = InitializeNonLocal : +# 2901| m2901_4(unknown) = Chi : total:m2901_2, partial:m2901_3 +# 2901| r2901_5(glval) = VariableAddress[#this] : +# 2901| m2901_6(glval) = InitializeParameter[#this] : &:r2901_5 +# 2901| r2901_7(glval) = Load[#this] : &:r2901_5, m2901_6 +# 2901| m2901_8(StructInit) = InitializeIndirection[#this] : &:r2901_7 +# 2901| r2901_9(glval) = VariableAddress[#return] : +# 2901| r2901_10(glval) = VariableAddress[#this] : +# 2901| r2901_11(StructInit *) = Load[#this] : &:r2901_10, m2901_6 +# 2901| r2901_12(glval) = FieldAddress[k] : r2901_11 +# 2901| r2901_13(int) = Load[?] : &:r2901_12, ~m2901_8 +# 2901| m2901_14(int) = Store[#return] : &:r2901_9, r2901_13 +# 2901| v2901_15(void) = ReturnIndirection[#this] : &:r2901_7, m2901_8 +# 2901| r2901_16(glval) = VariableAddress[#return] : +# 2901| v2901_17(void) = ReturnValue : &:r2901_16, m2901_14 +# 2901| v2901_18(void) = AliasedUse : m2901_3 +# 2901| v2901_19(void) = ExitFunction : + +# 2905| void StructInitFromTemplate::StructInitFromTemplate() +# 2905| Block 0 +# 2905| v2905_1(void) = EnterFunction : +# 2905| m2905_2(unknown) = AliasedDefinition : +# 2905| m2905_3(unknown) = InitializeNonLocal : +# 2905| m2905_4(unknown) = Chi : total:m2905_2, partial:m2905_3 +# 2905| r2905_5(glval) = VariableAddress[#this] : +# 2905| m2905_6(glval>) = InitializeParameter[#this] : &:r2905_5 +# 2905| r2905_7(glval>) = Load[#this] : &:r2905_5, m2905_6 +# 2905| m2905_8(StructInitFromTemplate) = InitializeIndirection[#this] : &:r2905_7 +# 2905| m2905_9(unknown) = Chi : total:m2905_4, partial:m2905_8 +# 2905| r2905_10(glval) = FunctionAddress[t] : +# 2905| v2905_11(void) = Call[t] : func:r2905_10, this:r2905_7 +# 2905| m2905_12(unknown) = ^CallSideEffect : ~m2905_9 +# 2905| m2905_13(unknown) = Chi : total:m2905_9, partial:m2905_12 +# 2905| v2905_14(void) = ^IndirectReadSideEffect[-1] : &:r2905_7, ~m2905_13 +# 2905| m2905_15(StructInitFromTemplate) = ^IndirectMayWriteSideEffect[-1] : &:r2905_7 +# 2905| m2905_16(unknown) = Chi : total:m2905_13, partial:m2905_15 +# 2905| v2905_17(void) = NoOp : +# 2905| v2905_18(void) = ReturnIndirection[#this] : &:r2905_7, ~m2905_16 +# 2905| v2905_19(void) = ReturnVoid : +# 2905| v2905_20(void) = AliasedUse : ~m2905_16 +# 2905| v2905_21(void) = ExitFunction : + +# 2906| int StructInitFromTemplate::t +# 2906| Block 0 +# 2906| v2906_1(void) = EnterFunction : +# 2906| m2906_2(unknown) = AliasedDefinition : +# 2906| m2906_3(unknown) = InitializeNonLocal : +# 2906| m2906_4(unknown) = Chi : total:m2906_2, partial:m2906_3 +# 2906| r2906_5(glval) = VariableAddress[#this] : +# 2906| m2906_6(glval>) = InitializeParameter[#this] : &:r2906_5 +# 2906| r2906_7(glval>) = Load[#this] : &:r2906_5, m2906_6 +# 2906| m2906_8(StructInitFromTemplate) = InitializeIndirection[#this] : &:r2906_7 +# 2906| r2906_9(glval) = FieldAddress[t] : r2906_7 +# 2906| r2906_10(glval) = VariableAddress[#temp2906:11] : +# 2906| r2906_11(int) = Constant[0] : +# 2906| m2906_12(int) = Store[#temp2906:11] : &:r2906_10, r2906_11 +# 2906| r2906_13(int) = Load[#temp2906:11] : &:r2906_10, m2906_12 +# 2906| m2906_14(int) = Store[?] : &:r2906_9, r2906_13 +# 2906| m2906_15(unknown) = Chi : total:m2906_8, partial:m2906_14 +# 2906| v2906_16(void) = ReturnVoid : +# 2906| v2906_17(void) = AliasedUse : m2906_3 +# 2906| v2906_18(void) = ExitFunction : + +# 2909| StructInitFromTemplate StructInitFromTemplateVar +# 2909| Block 0 +# 2909| v2909_1(void) = EnterFunction : +# 2909| m2909_2(unknown) = AliasedDefinition : +# 2909| r2909_3(glval>) = VariableAddress[StructInitFromTemplateVar] : +#-----| r0_1(glval>) = VariableAddress[#temp0:0] : +#-----| m0_2(StructInitFromTemplate) = Uninitialized[#temp0:0] : &:r0_1 +#-----| m0_3(unknown) = Chi : total:m2909_2, partial:m0_2 +#-----| r0_4(glval) = FunctionAddress[StructInitFromTemplate] : +#-----| v0_5(void) = Call[StructInitFromTemplate] : func:r0_4, this:r0_1 +#-----| m0_6(unknown) = ^CallSideEffect : ~m0_3 +#-----| m0_7(unknown) = Chi : total:m0_3, partial:m0_6 +#-----| m0_8(StructInitFromTemplate) = ^IndirectMayWriteSideEffect[-1] : &:r0_1 +#-----| m0_9(unknown) = Chi : total:m0_7, partial:m0_8 +#-----| r0_10(StructInitFromTemplate) = Load[#temp0:0] : &:r0_1, ~m0_9 +#-----| m0_11(StructInitFromTemplate) = Store[StructInitFromTemplateVar] : &:r2909_3, r0_10 +#-----| m0_12(unknown) = Chi : total:m0_9, partial:m0_11 +# 2909| v2909_4(void) = ReturnVoid : +# 2909| v2909_5(void) = AliasedUse : ~m0_12 +# 2909| v2909_6(void) = ExitFunction : + +# 2912| double VariableTemplate +# 2912| Block 0 +# 2912| v2912_1(void) = EnterFunction : +# 2912| m2912_2(unknown) = AliasedDefinition : +# 2912| r2912_3(glval) = VariableAddress[VariableTemplate] : +# 2912| r2912_4(double) = Constant[42.0] : +# 2912| m2912_5(double) = Store[VariableTemplate] : &:r2912_3, r2912_4 +# 2912| m2912_6(unknown) = Chi : total:m2912_2, partial:m2912_5 +# 2912| v2912_7(void) = ReturnVoid : +# 2912| v2912_8(void) = AliasedUse : ~m2912_6 +# 2912| v2912_9(void) = ExitFunction : + +# 2915| double VariableTemplateFunc(double) +# 2915| Block 0 +# 2915| v2915_1(void) = EnterFunction : +# 2915| m2915_2(unknown) = AliasedDefinition : +# 2915| m2915_3(unknown) = InitializeNonLocal : +# 2915| m2915_4(unknown) = Chi : total:m2915_2, partial:m2915_3 +# 2915| r2915_5(glval) = VariableAddress[x] : +# 2915| m2915_6(double) = InitializeParameter[x] : &:r2915_5 +# 2916| r2916_1(glval) = VariableAddress[#return] : +# 2916| r2916_2(double) = Constant[42.0] : +# 2916| r2916_3(glval) = VariableAddress[x] : +# 2916| r2916_4(double) = Load[x] : &:r2916_3, m2915_6 +# 2916| r2916_5(double) = Add : r2916_2, r2916_4 +# 2916| m2916_6(double) = Store[#return] : &:r2916_1, r2916_5 +# 2915| r2915_7(glval) = VariableAddress[#return] : +# 2915| v2915_8(void) = ReturnValue : &:r2915_7, m2916_6 +# 2915| v2915_9(void) = AliasedUse : m2915_3 +# 2915| v2915_10(void) = ExitFunction : + +# 2919| int VariableTemplateFuncUse +# 2919| Block 0 +# 2919| v2919_1(void) = EnterFunction : +# 2919| m2919_2(unknown) = AliasedDefinition : +# 2919| r2919_3(glval) = VariableAddress[VariableTemplateFuncUse] : +# 2919| r2919_4(glval) = FunctionAddress[VariableTemplateFunc] : +# 2919| r2919_5(double) = Constant[2.299999999999999822] : +# 2919| r2919_6(double) = Call[VariableTemplateFunc] : func:r2919_4, 0:r2919_5 +# 2919| m2919_7(unknown) = ^CallSideEffect : ~m2919_2 +# 2919| m2919_8(unknown) = Chi : total:m2919_2, partial:m2919_7 +# 2919| r2919_9(int) = Convert : r2919_6 +# 2919| m2919_10(int) = Store[VariableTemplateFuncUse] : &:r2919_3, r2919_9 +# 2919| m2919_11(unknown) = Chi : total:m2919_8, partial:m2919_10 +# 2919| v2919_12(void) = ReturnVoid : +# 2919| v2919_13(void) = AliasedUse : ~m2919_11 +# 2919| v2919_14(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 41494ec00b3c..1d2d4d5a79e3 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2886,4 +2886,36 @@ namespace { } } +struct StructInit { + int i = 42; + int j = 42; + int k = 42; + int l = k; + int m = get_val(); + int n = 42; + + StructInit(int j) : j(j), n(get_val()) {} + + StructInit() : i(41), k(41) {} + + int get_val() { return k; } +}; + +template +struct StructInitFromTemplate { + T t = T(); +}; + +StructInitFromTemplate StructInitFromTemplateVar; + +template +constexpr T VariableTemplate = T(42); + +template +T VariableTemplateFunc(T x) { + return VariableTemplate + x; +} + +int VariableTemplateFuncUse = VariableTemplateFunc(2.3); + // semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index de43ad9631aa..f1b75895c3e7 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -20,7 +20,6 @@ multipleIRTypes lostReachability backEdgeCountMismatch useNotDominatedByDefinition -| ir.cpp:1537:8:1537:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1537:8:1537:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 03278f9aa728..4e73b7d1aa6a 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -11339,44 +11339,89 @@ ir.cpp: # 1533| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() # 1533| Block 0 -# 1533| v1533_1(void) = EnterFunction : -# 1533| mu1533_2(unknown) = AliasedDefinition : -# 1533| mu1533_3(unknown) = InitializeNonLocal : -# 1533| r1533_4(glval) = VariableAddress[#this] : -# 1533| mu1533_5(glval) = InitializeParameter[#this] : &:r1533_4 -# 1533| r1533_6(glval) = Load[#this] : &:r1533_4, ~m? -# 1533| mu1533_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_6 -# 1533| v1533_8(void) = NoOp : -# 1533| v1533_9(void) = ReturnIndirection[#this] : &:r1533_6, ~m? -# 1533| v1533_10(void) = ReturnVoid : -# 1533| v1533_11(void) = AliasedUse : ~m? -# 1533| v1533_12(void) = ExitFunction : +# 1533| v1533_1(void) = EnterFunction : +# 1533| mu1533_2(unknown) = AliasedDefinition : +# 1533| mu1533_3(unknown) = InitializeNonLocal : +# 1533| r1533_4(glval) = VariableAddress[#this] : +# 1533| mu1533_5(glval) = InitializeParameter[#this] : &:r1533_4 +# 1533| r1533_6(glval) = Load[#this] : &:r1533_4, ~m? +# 1533| mu1533_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_6 +# 1533| r1533_8(glval) = FunctionAddress[x] : +# 1533| v1533_9(void) = Call[x] : func:r1533_8, this:r1533_6 +# 1533| mu1533_10(unknown) = ^CallSideEffect : ~m? +# 1533| v1533_11(void) = ^IndirectReadSideEffect[-1] : &:r1533_6, ~m? +# 1533| mu1533_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1533_6 +# 1533| v1533_13(void) = NoOp : +# 1533| v1533_14(void) = ReturnIndirection[#this] : &:r1533_6, ~m? +# 1533| v1533_15(void) = ReturnVoid : +# 1533| v1533_16(void) = AliasedUse : ~m? +# 1533| v1533_17(void) = ExitFunction : + +# 1534| int StructuredBindingDataMemberMemberStruct::x +# 1534| Block 0 +# 1534| v1534_1(void) = EnterFunction : +# 1534| mu1534_2(unknown) = AliasedDefinition : +# 1534| mu1534_3(unknown) = InitializeNonLocal : +# 1534| r1534_4(glval) = VariableAddress[#this] : +# 1534| mu1534_5(glval) = InitializeParameter[#this] : &:r1534_4 +# 1534| r1534_6(glval) = Load[#this] : &:r1534_4, ~m? +# 1534| mu1534_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1534_6 +# 1534| r1534_8(glval) = FieldAddress[x] : r1534_6 +# 1534| r1534_9(int) = Constant[5] : +# 1534| mu1534_10(int) = Store[?] : &:r1534_8, r1534_9 +# 1534| v1534_11(void) = ReturnVoid : +# 1534| v1534_12(void) = AliasedUse : ~m? +# 1534| v1534_13(void) = ExitFunction : # 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() # 1537| Block 0 -# 1537| v1537_1(void) = EnterFunction : -# 1537| mu1537_2(unknown) = AliasedDefinition : -# 1537| mu1537_3(unknown) = InitializeNonLocal : -# 1537| r1537_4(glval) = VariableAddress[#this] : -# 1537| mu1537_5(glval) = InitializeParameter[#this] : &:r1537_4 -# 1537| r1537_6(glval) = Load[#this] : &:r1537_4, ~m? -# 1537| mu1537_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_6 -#-----| Goto -> Block 2 - -# 1537| Block 1 -# 1537| r1537_8(glval) = FieldAddress[m] : r1537_6 -# 1537| r1537_9(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : -# 1537| v1537_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_9, this:r1537_8 -# 1537| mu1537_11(unknown) = ^CallSideEffect : ~m? -# 1537| mu1537_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_8 -#-----| Goto -> Block 2 - -# 1537| Block 2 -# 1537| v1537_13(void) = NoOp : -# 1537| v1537_14(void) = ReturnIndirection[#this] : &:r1537_6, ~m? -# 1537| v1537_15(void) = ReturnVoid : -# 1537| v1537_16(void) = AliasedUse : ~m? -# 1537| v1537_17(void) = ExitFunction : +# 1537| v1537_1(void) = EnterFunction : +# 1537| mu1537_2(unknown) = AliasedDefinition : +# 1537| mu1537_3(unknown) = InitializeNonLocal : +# 1537| r1537_4(glval) = VariableAddress[#this] : +# 1537| mu1537_5(glval) = InitializeParameter[#this] : &:r1537_4 +# 1537| r1537_6(glval) = Load[#this] : &:r1537_4, ~m? +# 1537| mu1537_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_6 +# 1537| r1537_8(glval) = FunctionAddress[i] : +# 1537| v1537_9(void) = Call[i] : func:r1537_8, this:r1537_6 +# 1537| mu1537_10(unknown) = ^CallSideEffect : ~m? +# 1537| v1537_11(void) = ^IndirectReadSideEffect[-1] : &:r1537_6, ~m? +# 1537| mu1537_12(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_6 +# 1537| r1537_13(glval) = FunctionAddress[d] : +# 1537| v1537_14(void) = Call[d] : func:r1537_13, this:r1537_6 +# 1537| mu1537_15(unknown) = ^CallSideEffect : ~m? +# 1537| v1537_16(void) = ^IndirectReadSideEffect[-1] : &:r1537_6, ~m? +# 1537| mu1537_17(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_6 +# 1537| r1537_18(glval) = FunctionAddress[r] : +# 1537| v1537_19(void) = Call[r] : func:r1537_18, this:r1537_6 +# 1537| mu1537_20(unknown) = ^CallSideEffect : ~m? +# 1537| v1537_21(void) = ^IndirectReadSideEffect[-1] : &:r1537_6, ~m? +# 1537| mu1537_22(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_6 +# 1537| r1537_23(glval) = FunctionAddress[p] : +# 1537| v1537_24(void) = Call[p] : func:r1537_23, this:r1537_6 +# 1537| mu1537_25(unknown) = ^CallSideEffect : ~m? +# 1537| v1537_26(void) = ^IndirectReadSideEffect[-1] : &:r1537_6, ~m? +# 1537| mu1537_27(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_6 +# 1537| r1537_28(glval) = FunctionAddress[xs] : +# 1537| v1537_29(void) = Call[xs] : func:r1537_28, this:r1537_6 +# 1537| mu1537_30(unknown) = ^CallSideEffect : ~m? +# 1537| v1537_31(void) = ^IndirectReadSideEffect[-1] : &:r1537_6, ~m? +# 1537| mu1537_32(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_6 +# 1537| r1537_33(glval) = FunctionAddress[r_alt] : +# 1537| v1537_34(void) = Call[r_alt] : func:r1537_33, this:r1537_6 +# 1537| mu1537_35(unknown) = ^CallSideEffect : ~m? +# 1537| v1537_36(void) = ^IndirectReadSideEffect[-1] : &:r1537_6, ~m? +# 1537| mu1537_37(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_6 +# 1537| r1537_38(glval) = FieldAddress[m] : r1537_6 +# 1537| r1537_39(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : +# 1537| v1537_40(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_39, this:r1537_38 +# 1537| mu1537_41(unknown) = ^CallSideEffect : ~m? +# 1537| mu1537_42(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_38 +# 1537| v1537_43(void) = NoOp : +# 1537| v1537_44(void) = ReturnIndirection[#this] : &:r1537_6, ~m? +# 1537| v1537_45(void) = ReturnVoid : +# 1537| v1537_46(void) = AliasedUse : ~m? +# 1537| v1537_47(void) = ExitFunction : # 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) # 1537| Block 0 @@ -11454,6 +11499,114 @@ ir.cpp: # 1537| v1537_67(void) = AliasedUse : ~m? # 1537| v1537_68(void) = ExitFunction : +# 1540| int StructuredBindingDataMemberStruct::i +# 1540| Block 0 +# 1540| v1540_1(void) = EnterFunction : +# 1540| mu1540_2(unknown) = AliasedDefinition : +# 1540| mu1540_3(unknown) = InitializeNonLocal : +# 1540| r1540_4(glval) = VariableAddress[#this] : +# 1540| mu1540_5(glval) = InitializeParameter[#this] : &:r1540_4 +# 1540| r1540_6(glval) = Load[#this] : &:r1540_4, ~m? +# 1540| mu1540_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1540_6 +# 1540| r1540_8(glval) = FieldAddress[i] : r1540_6 +# 1540| r1540_9(int) = Constant[1] : +# 1540| mu1540_10(int) = Store[?] : &:r1540_8, r1540_9 +# 1540| v1540_11(void) = ReturnVoid : +# 1540| v1540_12(void) = AliasedUse : ~m? +# 1540| v1540_13(void) = ExitFunction : + +# 1541| double StructuredBindingDataMemberStruct::d +# 1541| Block 0 +# 1541| v1541_1(void) = EnterFunction : +# 1541| mu1541_2(unknown) = AliasedDefinition : +# 1541| mu1541_3(unknown) = InitializeNonLocal : +# 1541| r1541_4(glval) = VariableAddress[#this] : +# 1541| mu1541_5(glval) = InitializeParameter[#this] : &:r1541_4 +# 1541| r1541_6(glval) = Load[#this] : &:r1541_4, ~m? +# 1541| mu1541_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1541_6 +# 1541| r1541_8(glval) = FieldAddress[d] : r1541_6 +# 1541| r1541_9(double) = Constant[2.0] : +# 1541| mu1541_10(double) = Store[?] : &:r1541_8, r1541_9 +# 1541| v1541_11(void) = ReturnVoid : +# 1541| v1541_12(void) = AliasedUse : ~m? +# 1541| v1541_13(void) = ExitFunction : + +# 1543| int& StructuredBindingDataMemberStruct::r +# 1543| Block 0 +# 1543| v1543_1(void) = EnterFunction : +# 1543| mu1543_2(unknown) = AliasedDefinition : +# 1543| mu1543_3(unknown) = InitializeNonLocal : +# 1543| r1543_4(glval) = VariableAddress[#this] : +# 1543| mu1543_5(glval) = InitializeParameter[#this] : &:r1543_4 +# 1543| r1543_6(glval) = Load[#this] : &:r1543_4, ~m? +# 1543| mu1543_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1543_6 +# 1543| r1543_8(glval) = FieldAddress[r] : r1543_6 +# 1543| r1543_9(StructuredBindingDataMemberStruct *) = CopyValue : r1543_6 +# 1543| r1543_10(glval) = FieldAddress[i] : r1543_9 +#-----| r0_1(int &) = CopyValue : r1543_10 +#-----| mu0_2(int &) = Store[?] : &:r1543_8, r0_1 +# 1543| v1543_11(void) = ReturnVoid : +# 1543| v1543_12(void) = AliasedUse : ~m? +# 1543| v1543_13(void) = ExitFunction : + +# 1544| int* StructuredBindingDataMemberStruct::p +# 1544| Block 0 +# 1544| v1544_1(void) = EnterFunction : +# 1544| mu1544_2(unknown) = AliasedDefinition : +# 1544| mu1544_3(unknown) = InitializeNonLocal : +# 1544| r1544_4(glval) = VariableAddress[#this] : +# 1544| mu1544_5(glval) = InitializeParameter[#this] : &:r1544_4 +# 1544| r1544_6(glval) = Load[#this] : &:r1544_4, ~m? +# 1544| mu1544_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1544_6 +# 1544| r1544_8(glval) = FieldAddress[p] : r1544_6 +# 1544| r1544_9(StructuredBindingDataMemberStruct *) = CopyValue : r1544_6 +# 1544| r1544_10(glval) = FieldAddress[i] : r1544_9 +# 1544| r1544_11(int *) = CopyValue : r1544_10 +# 1544| mu1544_12(int *) = Store[?] : &:r1544_8, r1544_11 +# 1544| v1544_13(void) = ReturnVoid : +# 1544| v1544_14(void) = AliasedUse : ~m? +# 1544| v1544_15(void) = ExitFunction : + +# 1545| StructuredBindingDataMemberStruct::ArrayType StructuredBindingDataMemberStruct::xs +# 1545| Block 0 +# 1545| v1545_1(void) = EnterFunction : +# 1545| mu1545_2(unknown) = AliasedDefinition : +# 1545| mu1545_3(unknown) = InitializeNonLocal : +# 1545| r1545_4(glval) = VariableAddress[#this] : +# 1545| mu1545_5(glval) = InitializeParameter[#this] : &:r1545_4 +# 1545| r1545_6(glval) = Load[#this] : &:r1545_4, ~m? +# 1545| mu1545_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1545_6 +# 1545| r1545_8(glval) = FieldAddress[xs] : r1545_6 +# 1545| r1545_9(int) = Constant[0] : +# 1545| r1545_10(glval) = PointerAdd[4] : r1545_8, r1545_9 +# 1545| r1545_11(int) = Constant[1] : +# 1545| mu1545_12(int) = Store[?] : &:r1545_10, r1545_11 +# 1545| r1545_13(int) = Constant[1] : +# 1545| r1545_14(glval) = PointerAdd[4] : r1545_8, r1545_13 +# 1545| r1545_15(int) = Constant[2] : +# 1545| mu1545_16(int) = Store[?] : &:r1545_14, r1545_15 +# 1545| v1545_17(void) = ReturnVoid : +# 1545| v1545_18(void) = AliasedUse : ~m? +# 1545| v1545_19(void) = ExitFunction : + +# 1546| StructuredBindingDataMemberStruct::RefType StructuredBindingDataMemberStruct::r_alt +# 1546| Block 0 +# 1546| v1546_1(void) = EnterFunction : +# 1546| mu1546_2(unknown) = AliasedDefinition : +# 1546| mu1546_3(unknown) = InitializeNonLocal : +# 1546| r1546_4(glval) = VariableAddress[#this] : +# 1546| mu1546_5(glval) = InitializeParameter[#this] : &:r1546_4 +# 1546| r1546_6(glval) = Load[#this] : &:r1546_4, ~m? +# 1546| mu1546_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1546_6 +# 1546| r1546_8(glval) = FieldAddress[r_alt] : r1546_6 +# 1546| r1546_9(StructuredBindingDataMemberStruct *) = CopyValue : r1546_6 +# 1546| r1546_10(glval) = FieldAddress[i] : r1546_9 +#-----| r0_1(int &) = CopyValue : r1546_10 +#-----| mu0_2(int &) = Store[?] : &:r1546_8, r0_1 +# 1546| v1546_11(void) = ReturnVoid : +# 1546| v1546_12(void) = AliasedUse : ~m? +# 1546| v1546_13(void) = ExitFunction : + # 1550| void data_member_structured_binding() # 1550| Block 0 # 1550| v1550_1(void) = EnterFunction : @@ -11621,18 +11774,33 @@ ir.cpp: # 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() # 1590| Block 0 -# 1590| v1590_1(void) = EnterFunction : -# 1590| mu1590_2(unknown) = AliasedDefinition : -# 1590| mu1590_3(unknown) = InitializeNonLocal : -# 1590| r1590_4(glval) = VariableAddress[#this] : -# 1590| mu1590_5(glval) = InitializeParameter[#this] : &:r1590_4 -# 1590| r1590_6(glval) = Load[#this] : &:r1590_4, ~m? -# 1590| mu1590_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_6 -# 1590| v1590_8(void) = NoOp : -# 1590| v1590_9(void) = ReturnIndirection[#this] : &:r1590_6, ~m? -# 1590| v1590_10(void) = ReturnVoid : -# 1590| v1590_11(void) = AliasedUse : ~m? -# 1590| v1590_12(void) = ExitFunction : +# 1590| v1590_1(void) = EnterFunction : +# 1590| mu1590_2(unknown) = AliasedDefinition : +# 1590| mu1590_3(unknown) = InitializeNonLocal : +# 1590| r1590_4(glval) = VariableAddress[#this] : +# 1590| mu1590_5(glval) = InitializeParameter[#this] : &:r1590_4 +# 1590| r1590_6(glval) = Load[#this] : &:r1590_4, ~m? +# 1590| mu1590_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_6 +# 1590| r1590_8(glval) = FunctionAddress[i] : +# 1590| v1590_9(void) = Call[i] : func:r1590_8, this:r1590_6 +# 1590| mu1590_10(unknown) = ^CallSideEffect : ~m? +# 1590| v1590_11(void) = ^IndirectReadSideEffect[-1] : &:r1590_6, ~m? +# 1590| mu1590_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1590_6 +# 1590| r1590_13(glval) = FunctionAddress[d] : +# 1590| v1590_14(void) = Call[d] : func:r1590_13, this:r1590_6 +# 1590| mu1590_15(unknown) = ^CallSideEffect : ~m? +# 1590| v1590_16(void) = ^IndirectReadSideEffect[-1] : &:r1590_6, ~m? +# 1590| mu1590_17(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1590_6 +# 1590| r1590_18(glval) = FunctionAddress[r] : +# 1590| v1590_19(void) = Call[r] : func:r1590_18, this:r1590_6 +# 1590| mu1590_20(unknown) = ^CallSideEffect : ~m? +# 1590| v1590_21(void) = ^IndirectReadSideEffect[-1] : &:r1590_6, ~m? +# 1590| mu1590_22(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1590_6 +# 1590| v1590_23(void) = NoOp : +# 1590| v1590_24(void) = ReturnIndirection[#this] : &:r1590_6, ~m? +# 1590| v1590_25(void) = ReturnVoid : +# 1590| v1590_26(void) = AliasedUse : ~m? +# 1590| v1590_27(void) = ExitFunction : # 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) # 1590| Block 0 @@ -11675,6 +11843,56 @@ ir.cpp: # 1590| v1590_32(void) = AliasedUse : ~m? # 1590| v1590_33(void) = ExitFunction : +# 1591| int StructuredBindingTupleRefGet::i +# 1591| Block 0 +# 1591| v1591_1(void) = EnterFunction : +# 1591| mu1591_2(unknown) = AliasedDefinition : +# 1591| mu1591_3(unknown) = InitializeNonLocal : +# 1591| r1591_4(glval) = VariableAddress[#this] : +# 1591| mu1591_5(glval) = InitializeParameter[#this] : &:r1591_4 +# 1591| r1591_6(glval) = Load[#this] : &:r1591_4, ~m? +# 1591| mu1591_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1591_6 +# 1591| r1591_8(glval) = FieldAddress[i] : r1591_6 +# 1591| r1591_9(int) = Constant[1] : +# 1591| mu1591_10(int) = Store[?] : &:r1591_8, r1591_9 +# 1591| v1591_11(void) = ReturnVoid : +# 1591| v1591_12(void) = AliasedUse : ~m? +# 1591| v1591_13(void) = ExitFunction : + +# 1592| double StructuredBindingTupleRefGet::d +# 1592| Block 0 +# 1592| v1592_1(void) = EnterFunction : +# 1592| mu1592_2(unknown) = AliasedDefinition : +# 1592| mu1592_3(unknown) = InitializeNonLocal : +# 1592| r1592_4(glval) = VariableAddress[#this] : +# 1592| mu1592_5(glval) = InitializeParameter[#this] : &:r1592_4 +# 1592| r1592_6(glval) = Load[#this] : &:r1592_4, ~m? +# 1592| mu1592_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1592_6 +# 1592| r1592_8(glval) = FieldAddress[d] : r1592_6 +# 1592| r1592_9(double) = Constant[2.200000000000000178] : +# 1592| mu1592_10(double) = Store[?] : &:r1592_8, r1592_9 +# 1592| v1592_11(void) = ReturnVoid : +# 1592| v1592_12(void) = AliasedUse : ~m? +# 1592| v1592_13(void) = ExitFunction : + +# 1593| int& StructuredBindingTupleRefGet::r +# 1593| Block 0 +# 1593| v1593_1(void) = EnterFunction : +# 1593| mu1593_2(unknown) = AliasedDefinition : +# 1593| mu1593_3(unknown) = InitializeNonLocal : +# 1593| r1593_4(glval) = VariableAddress[#this] : +# 1593| mu1593_5(glval) = InitializeParameter[#this] : &:r1593_4 +# 1593| r1593_6(glval) = Load[#this] : &:r1593_4, ~m? +# 1593| mu1593_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1593_6 +# 1593| r1593_8(glval) = FieldAddress[r] : r1593_6 +# 1593| r1593_9(StructuredBindingTupleRefGet *) = CopyValue : r1593_6 +# 1593| r1593_10(glval) = FieldAddress[i] : r1593_9 +#-----| r0_1(int &) = CopyValue : r1593_10 +#-----| mu0_2(int &) = Store[?] : &:r1593_8, r0_1 +# 1593| v1593_11(void) = ReturnVoid : +# 1593| v1593_12(void) = AliasedUse : ~m? +# 1593| v1593_13(void) = ExitFunction : + # 1618| std::tuple_element::type& StructuredBindingTupleRefGet::get() # 1618| Block 0 # 1618| v1618_1(void) = EnterFunction : @@ -11890,18 +12108,62 @@ ir.cpp: # 1657| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() # 1657| Block 0 -# 1657| v1657_1(void) = EnterFunction : -# 1657| mu1657_2(unknown) = AliasedDefinition : -# 1657| mu1657_3(unknown) = InitializeNonLocal : -# 1657| r1657_4(glval) = VariableAddress[#this] : -# 1657| mu1657_5(glval) = InitializeParameter[#this] : &:r1657_4 -# 1657| r1657_6(glval) = Load[#this] : &:r1657_4, ~m? -# 1657| mu1657_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_6 -# 1657| v1657_8(void) = NoOp : -# 1657| v1657_9(void) = ReturnIndirection[#this] : &:r1657_6, ~m? -# 1657| v1657_10(void) = ReturnVoid : -# 1657| v1657_11(void) = AliasedUse : ~m? -# 1657| v1657_12(void) = ExitFunction : +# 1657| v1657_1(void) = EnterFunction : +# 1657| mu1657_2(unknown) = AliasedDefinition : +# 1657| mu1657_3(unknown) = InitializeNonLocal : +# 1657| r1657_4(glval) = VariableAddress[#this] : +# 1657| mu1657_5(glval) = InitializeParameter[#this] : &:r1657_4 +# 1657| r1657_6(glval) = Load[#this] : &:r1657_4, ~m? +# 1657| mu1657_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_6 +# 1657| r1657_8(glval) = FunctionAddress[i] : +# 1657| v1657_9(void) = Call[i] : func:r1657_8, this:r1657_6 +# 1657| mu1657_10(unknown) = ^CallSideEffect : ~m? +# 1657| v1657_11(void) = ^IndirectReadSideEffect[-1] : &:r1657_6, ~m? +# 1657| mu1657_12(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1657_6 +# 1657| r1657_13(glval) = FunctionAddress[r] : +# 1657| v1657_14(void) = Call[r] : func:r1657_13, this:r1657_6 +# 1657| mu1657_15(unknown) = ^CallSideEffect : ~m? +# 1657| v1657_16(void) = ^IndirectReadSideEffect[-1] : &:r1657_6, ~m? +# 1657| mu1657_17(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1657_6 +# 1657| v1657_18(void) = NoOp : +# 1657| v1657_19(void) = ReturnIndirection[#this] : &:r1657_6, ~m? +# 1657| v1657_20(void) = ReturnVoid : +# 1657| v1657_21(void) = AliasedUse : ~m? +# 1657| v1657_22(void) = ExitFunction : + +# 1658| int StructuredBindingTupleNoRefGet::i +# 1658| Block 0 +# 1658| v1658_1(void) = EnterFunction : +# 1658| mu1658_2(unknown) = AliasedDefinition : +# 1658| mu1658_3(unknown) = InitializeNonLocal : +# 1658| r1658_4(glval) = VariableAddress[#this] : +# 1658| mu1658_5(glval) = InitializeParameter[#this] : &:r1658_4 +# 1658| r1658_6(glval) = Load[#this] : &:r1658_4, ~m? +# 1658| mu1658_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1658_6 +# 1658| r1658_8(glval) = FieldAddress[i] : r1658_6 +# 1658| r1658_9(int) = Constant[1] : +# 1658| mu1658_10(int) = Store[?] : &:r1658_8, r1658_9 +# 1658| v1658_11(void) = ReturnVoid : +# 1658| v1658_12(void) = AliasedUse : ~m? +# 1658| v1658_13(void) = ExitFunction : + +# 1659| int& StructuredBindingTupleNoRefGet::r +# 1659| Block 0 +# 1659| v1659_1(void) = EnterFunction : +# 1659| mu1659_2(unknown) = AliasedDefinition : +# 1659| mu1659_3(unknown) = InitializeNonLocal : +# 1659| r1659_4(glval) = VariableAddress[#this] : +# 1659| mu1659_5(glval) = InitializeParameter[#this] : &:r1659_4 +# 1659| r1659_6(glval) = Load[#this] : &:r1659_4, ~m? +# 1659| mu1659_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1659_6 +# 1659| r1659_8(glval) = FieldAddress[r] : r1659_6 +# 1659| r1659_9(StructuredBindingTupleNoRefGet *) = CopyValue : r1659_6 +# 1659| r1659_10(glval) = FieldAddress[i] : r1659_9 +#-----| r0_1(int &) = CopyValue : r1659_10 +#-----| mu0_2(int &) = Store[?] : &:r1659_8, r0_1 +# 1659| v1659_11(void) = ReturnVoid : +# 1659| v1659_12(void) = AliasedUse : ~m? +# 1659| v1659_13(void) = ExitFunction : # 1684| std::tuple_element::type StructuredBindingTupleNoRefGet::get() # 1684| Block 0 @@ -19200,6 +19462,321 @@ ir.cpp: # 2867| v2867_13(void) = ReturnVoid : #-----| Goto -> Block 1 +# 2890| int StructInit::i +# 2890| Block 0 +# 2890| v2890_1(void) = EnterFunction : +# 2890| mu2890_2(unknown) = AliasedDefinition : +# 2890| mu2890_3(unknown) = InitializeNonLocal : +# 2890| r2890_4(glval) = VariableAddress[#this] : +# 2890| mu2890_5(glval) = InitializeParameter[#this] : &:r2890_4 +# 2890| r2890_6(glval) = Load[#this] : &:r2890_4, ~m? +# 2890| mu2890_7(StructInit) = InitializeIndirection[#this] : &:r2890_6 +# 2890| r2890_8(glval) = FieldAddress[i] : r2890_6 +# 2890| r2890_9(int) = Constant[42] : +# 2890| mu2890_10(int) = Store[?] : &:r2890_8, r2890_9 +# 2890| v2890_11(void) = ReturnVoid : +# 2890| v2890_12(void) = AliasedUse : ~m? +# 2890| v2890_13(void) = ExitFunction : + +# 2891| int StructInit::j +# 2891| Block 0 +# 2891| v2891_1(void) = EnterFunction : +# 2891| mu2891_2(unknown) = AliasedDefinition : +# 2891| mu2891_3(unknown) = InitializeNonLocal : +# 2891| r2891_4(glval) = VariableAddress[#this] : +# 2891| mu2891_5(glval) = InitializeParameter[#this] : &:r2891_4 +# 2891| r2891_6(glval) = Load[#this] : &:r2891_4, ~m? +# 2891| mu2891_7(StructInit) = InitializeIndirection[#this] : &:r2891_6 +# 2891| r2891_8(glval) = FieldAddress[j] : r2891_6 +# 2891| r2891_9(int) = Constant[42] : +# 2891| mu2891_10(int) = Store[?] : &:r2891_8, r2891_9 +# 2891| v2891_11(void) = ReturnVoid : +# 2891| v2891_12(void) = AliasedUse : ~m? +# 2891| v2891_13(void) = ExitFunction : + +# 2892| int StructInit::k +# 2892| Block 0 +# 2892| v2892_1(void) = EnterFunction : +# 2892| mu2892_2(unknown) = AliasedDefinition : +# 2892| mu2892_3(unknown) = InitializeNonLocal : +# 2892| r2892_4(glval) = VariableAddress[#this] : +# 2892| mu2892_5(glval) = InitializeParameter[#this] : &:r2892_4 +# 2892| r2892_6(glval) = Load[#this] : &:r2892_4, ~m? +# 2892| mu2892_7(StructInit) = InitializeIndirection[#this] : &:r2892_6 +# 2892| r2892_8(glval) = FieldAddress[k] : r2892_6 +# 2892| r2892_9(int) = Constant[42] : +# 2892| mu2892_10(int) = Store[?] : &:r2892_8, r2892_9 +# 2892| v2892_11(void) = ReturnVoid : +# 2892| v2892_12(void) = AliasedUse : ~m? +# 2892| v2892_13(void) = ExitFunction : + +# 2893| int StructInit::l +# 2893| Block 0 +# 2893| v2893_1(void) = EnterFunction : +# 2893| mu2893_2(unknown) = AliasedDefinition : +# 2893| mu2893_3(unknown) = InitializeNonLocal : +# 2893| r2893_4(glval) = VariableAddress[#this] : +# 2893| mu2893_5(glval) = InitializeParameter[#this] : &:r2893_4 +# 2893| r2893_6(glval) = Load[#this] : &:r2893_4, ~m? +# 2893| mu2893_7(StructInit) = InitializeIndirection[#this] : &:r2893_6 +# 2893| r2893_8(glval) = FieldAddress[l] : r2893_6 +# 2893| r2893_9(StructInit *) = CopyValue : r2893_6 +# 2893| r2893_10(glval) = FieldAddress[k] : r2893_9 +# 2893| r2893_11(int) = Load[?] : &:r2893_10, ~m? +# 2893| mu2893_12(int) = Store[?] : &:r2893_8, r2893_11 +# 2893| v2893_13(void) = ReturnVoid : +# 2893| v2893_14(void) = AliasedUse : ~m? +# 2893| v2893_15(void) = ExitFunction : + +# 2894| int StructInit::m +# 2894| Block 0 +# 2894| v2894_1(void) = EnterFunction : +# 2894| mu2894_2(unknown) = AliasedDefinition : +# 2894| mu2894_3(unknown) = InitializeNonLocal : +# 2894| r2894_4(glval) = VariableAddress[#this] : +# 2894| mu2894_5(glval) = InitializeParameter[#this] : &:r2894_4 +# 2894| r2894_6(glval) = Load[#this] : &:r2894_4, ~m? +# 2894| mu2894_7(StructInit) = InitializeIndirection[#this] : &:r2894_6 +# 2894| r2894_8(glval) = FieldAddress[m] : r2894_6 +# 2894| r2894_9(StructInit *) = CopyValue : r2894_6 +# 2894| r2894_10(glval) = FunctionAddress[get_val] : +# 2894| r2894_11(int) = Call[get_val] : func:r2894_10, this:r2894_9 +# 2894| mu2894_12(unknown) = ^CallSideEffect : ~m? +# 2894| v2894_13(void) = ^IndirectReadSideEffect[-1] : &:r2894_9, ~m? +# 2894| mu2894_14(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2894_9 +# 2894| mu2894_15(int) = Store[?] : &:r2894_8, r2894_11 +# 2894| v2894_16(void) = ReturnVoid : +# 2894| v2894_17(void) = AliasedUse : ~m? +# 2894| v2894_18(void) = ExitFunction : + +# 2895| int StructInit::n +# 2895| Block 0 +# 2895| v2895_1(void) = EnterFunction : +# 2895| mu2895_2(unknown) = AliasedDefinition : +# 2895| mu2895_3(unknown) = InitializeNonLocal : +# 2895| r2895_4(glval) = VariableAddress[#this] : +# 2895| mu2895_5(glval) = InitializeParameter[#this] : &:r2895_4 +# 2895| r2895_6(glval) = Load[#this] : &:r2895_4, ~m? +# 2895| mu2895_7(StructInit) = InitializeIndirection[#this] : &:r2895_6 +# 2895| r2895_8(glval) = FieldAddress[n] : r2895_6 +# 2895| r2895_9(int) = Constant[42] : +# 2895| mu2895_10(int) = Store[?] : &:r2895_8, r2895_9 +# 2895| v2895_11(void) = ReturnVoid : +# 2895| v2895_12(void) = AliasedUse : ~m? +# 2895| v2895_13(void) = ExitFunction : + +# 2897| void StructInit::StructInit(int) +# 2897| Block 0 +# 2897| v2897_1(void) = EnterFunction : +# 2897| mu2897_2(unknown) = AliasedDefinition : +# 2897| mu2897_3(unknown) = InitializeNonLocal : +# 2897| r2897_4(glval) = VariableAddress[#this] : +# 2897| mu2897_5(glval) = InitializeParameter[#this] : &:r2897_4 +# 2897| r2897_6(glval) = Load[#this] : &:r2897_4, ~m? +# 2897| mu2897_7(StructInit) = InitializeIndirection[#this] : &:r2897_6 +# 2897| r2897_8(glval) = VariableAddress[j] : +# 2897| mu2897_9(int) = InitializeParameter[j] : &:r2897_8 +# 2897| r2897_10(glval) = FunctionAddress[i] : +# 2897| v2897_11(void) = Call[i] : func:r2897_10, this:r2897_6 +# 2897| mu2897_12(unknown) = ^CallSideEffect : ~m? +# 2897| v2897_13(void) = ^IndirectReadSideEffect[-1] : &:r2897_6, ~m? +# 2897| mu2897_14(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_6 +# 2897| r2897_15(glval) = FieldAddress[j] : r2897_6 +# 2897| r2897_16(glval) = VariableAddress[j] : +# 2897| r2897_17(int) = Load[j] : &:r2897_16, ~m? +# 2897| mu2897_18(int) = Store[?] : &:r2897_15, r2897_17 +# 2897| r2897_19(glval) = FunctionAddress[k] : +# 2897| v2897_20(void) = Call[k] : func:r2897_19, this:r2897_6 +# 2897| mu2897_21(unknown) = ^CallSideEffect : ~m? +# 2897| v2897_22(void) = ^IndirectReadSideEffect[-1] : &:r2897_6, ~m? +# 2897| mu2897_23(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_6 +# 2897| r2897_24(glval) = FunctionAddress[l] : +# 2897| v2897_25(void) = Call[l] : func:r2897_24, this:r2897_6 +# 2897| mu2897_26(unknown) = ^CallSideEffect : ~m? +# 2897| v2897_27(void) = ^IndirectReadSideEffect[-1] : &:r2897_6, ~m? +# 2897| mu2897_28(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_6 +# 2897| r2897_29(glval) = FunctionAddress[m] : +# 2897| v2897_30(void) = Call[m] : func:r2897_29, this:r2897_6 +# 2897| mu2897_31(unknown) = ^CallSideEffect : ~m? +# 2897| v2897_32(void) = ^IndirectReadSideEffect[-1] : &:r2897_6, ~m? +# 2897| mu2897_33(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_6 +# 2897| r2897_34(glval) = FieldAddress[n] : r2897_6 +# 2897| r2897_35(glval) = VariableAddress[#this] : +# 2897| r2897_36(StructInit *) = Load[#this] : &:r2897_35, ~m? +# 2897| r2897_37(glval) = FunctionAddress[get_val] : +# 2897| r2897_38(int) = Call[get_val] : func:r2897_37, this:r2897_36 +# 2897| mu2897_39(unknown) = ^CallSideEffect : ~m? +# 2897| v2897_40(void) = ^IndirectReadSideEffect[-1] : &:r2897_36, ~m? +# 2897| mu2897_41(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2897_36 +# 2897| mu2897_42(int) = Store[?] : &:r2897_34, r2897_38 +# 2897| v2897_43(void) = NoOp : +# 2897| v2897_44(void) = ReturnIndirection[#this] : &:r2897_6, ~m? +# 2897| v2897_45(void) = ReturnVoid : +# 2897| v2897_46(void) = AliasedUse : ~m? +# 2897| v2897_47(void) = ExitFunction : + +# 2899| void StructInit::StructInit() +# 2899| Block 0 +# 2899| v2899_1(void) = EnterFunction : +# 2899| mu2899_2(unknown) = AliasedDefinition : +# 2899| mu2899_3(unknown) = InitializeNonLocal : +# 2899| r2899_4(glval) = VariableAddress[#this] : +# 2899| mu2899_5(glval) = InitializeParameter[#this] : &:r2899_4 +# 2899| r2899_6(glval) = Load[#this] : &:r2899_4, ~m? +# 2899| mu2899_7(StructInit) = InitializeIndirection[#this] : &:r2899_6 +# 2899| r2899_8(glval) = FieldAddress[i] : r2899_6 +# 2899| r2899_9(int) = Constant[41] : +# 2899| mu2899_10(int) = Store[?] : &:r2899_8, r2899_9 +# 2899| r2899_11(glval) = FunctionAddress[j] : +# 2899| v2899_12(void) = Call[j] : func:r2899_11, this:r2899_6 +# 2899| mu2899_13(unknown) = ^CallSideEffect : ~m? +# 2899| v2899_14(void) = ^IndirectReadSideEffect[-1] : &:r2899_6, ~m? +# 2899| mu2899_15(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_6 +# 2899| r2899_16(glval) = FieldAddress[k] : r2899_6 +# 2899| r2899_17(int) = Constant[41] : +# 2899| mu2899_18(int) = Store[?] : &:r2899_16, r2899_17 +# 2899| r2899_19(glval) = FunctionAddress[l] : +# 2899| v2899_20(void) = Call[l] : func:r2899_19, this:r2899_6 +# 2899| mu2899_21(unknown) = ^CallSideEffect : ~m? +# 2899| v2899_22(void) = ^IndirectReadSideEffect[-1] : &:r2899_6, ~m? +# 2899| mu2899_23(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_6 +# 2899| r2899_24(glval) = FunctionAddress[m] : +# 2899| v2899_25(void) = Call[m] : func:r2899_24, this:r2899_6 +# 2899| mu2899_26(unknown) = ^CallSideEffect : ~m? +# 2899| v2899_27(void) = ^IndirectReadSideEffect[-1] : &:r2899_6, ~m? +# 2899| mu2899_28(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_6 +# 2899| r2899_29(glval) = FunctionAddress[n] : +# 2899| v2899_30(void) = Call[n] : func:r2899_29, this:r2899_6 +# 2899| mu2899_31(unknown) = ^CallSideEffect : ~m? +# 2899| v2899_32(void) = ^IndirectReadSideEffect[-1] : &:r2899_6, ~m? +# 2899| mu2899_33(StructInit) = ^IndirectMayWriteSideEffect[-1] : &:r2899_6 +# 2899| v2899_34(void) = NoOp : +# 2899| v2899_35(void) = ReturnIndirection[#this] : &:r2899_6, ~m? +# 2899| v2899_36(void) = ReturnVoid : +# 2899| v2899_37(void) = AliasedUse : ~m? +# 2899| v2899_38(void) = ExitFunction : + +# 2901| int StructInit::get_val() +# 2901| Block 0 +# 2901| v2901_1(void) = EnterFunction : +# 2901| mu2901_2(unknown) = AliasedDefinition : +# 2901| mu2901_3(unknown) = InitializeNonLocal : +# 2901| r2901_4(glval) = VariableAddress[#this] : +# 2901| mu2901_5(glval) = InitializeParameter[#this] : &:r2901_4 +# 2901| r2901_6(glval) = Load[#this] : &:r2901_4, ~m? +# 2901| mu2901_7(StructInit) = InitializeIndirection[#this] : &:r2901_6 +# 2901| r2901_8(glval) = VariableAddress[#return] : +# 2901| r2901_9(glval) = VariableAddress[#this] : +# 2901| r2901_10(StructInit *) = Load[#this] : &:r2901_9, ~m? +# 2901| r2901_11(glval) = FieldAddress[k] : r2901_10 +# 2901| r2901_12(int) = Load[?] : &:r2901_11, ~m? +# 2901| mu2901_13(int) = Store[#return] : &:r2901_8, r2901_12 +# 2901| v2901_14(void) = ReturnIndirection[#this] : &:r2901_6, ~m? +# 2901| r2901_15(glval) = VariableAddress[#return] : +# 2901| v2901_16(void) = ReturnValue : &:r2901_15, ~m? +# 2901| v2901_17(void) = AliasedUse : ~m? +# 2901| v2901_18(void) = ExitFunction : + +# 2905| void StructInitFromTemplate::StructInitFromTemplate() +# 2905| Block 0 +# 2905| v2905_1(void) = EnterFunction : +# 2905| mu2905_2(unknown) = AliasedDefinition : +# 2905| mu2905_3(unknown) = InitializeNonLocal : +# 2905| r2905_4(glval) = VariableAddress[#this] : +# 2905| mu2905_5(glval>) = InitializeParameter[#this] : &:r2905_4 +# 2905| r2905_6(glval>) = Load[#this] : &:r2905_4, ~m? +# 2905| mu2905_7(StructInitFromTemplate) = InitializeIndirection[#this] : &:r2905_6 +# 2905| r2905_8(glval) = FunctionAddress[t] : +# 2905| v2905_9(void) = Call[t] : func:r2905_8, this:r2905_6 +# 2905| mu2905_10(unknown) = ^CallSideEffect : ~m? +# 2905| v2905_11(void) = ^IndirectReadSideEffect[-1] : &:r2905_6, ~m? +# 2905| mu2905_12(StructInitFromTemplate) = ^IndirectMayWriteSideEffect[-1] : &:r2905_6 +# 2905| v2905_13(void) = NoOp : +# 2905| v2905_14(void) = ReturnIndirection[#this] : &:r2905_6, ~m? +# 2905| v2905_15(void) = ReturnVoid : +# 2905| v2905_16(void) = AliasedUse : ~m? +# 2905| v2905_17(void) = ExitFunction : + +# 2906| int StructInitFromTemplate::t +# 2906| Block 0 +# 2906| v2906_1(void) = EnterFunction : +# 2906| mu2906_2(unknown) = AliasedDefinition : +# 2906| mu2906_3(unknown) = InitializeNonLocal : +# 2906| r2906_4(glval) = VariableAddress[#this] : +# 2906| mu2906_5(glval>) = InitializeParameter[#this] : &:r2906_4 +# 2906| r2906_6(glval>) = Load[#this] : &:r2906_4, ~m? +# 2906| mu2906_7(StructInitFromTemplate) = InitializeIndirection[#this] : &:r2906_6 +# 2906| r2906_8(glval) = FieldAddress[t] : r2906_6 +# 2906| r2906_9(glval) = VariableAddress[#temp2906:11] : +# 2906| r2906_10(int) = Constant[0] : +# 2906| mu2906_11(int) = Store[#temp2906:11] : &:r2906_9, r2906_10 +# 2906| r2906_12(int) = Load[#temp2906:11] : &:r2906_9, ~m? +# 2906| mu2906_13(int) = Store[?] : &:r2906_8, r2906_12 +# 2906| v2906_14(void) = ReturnVoid : +# 2906| v2906_15(void) = AliasedUse : ~m? +# 2906| v2906_16(void) = ExitFunction : + +# 2909| StructInitFromTemplate StructInitFromTemplateVar +# 2909| Block 0 +# 2909| v2909_1(void) = EnterFunction : +# 2909| mu2909_2(unknown) = AliasedDefinition : +# 2909| r2909_3(glval>) = VariableAddress[StructInitFromTemplateVar] : +#-----| r0_1(glval>) = VariableAddress[#temp0:0] : +#-----| mu0_2(StructInitFromTemplate) = Uninitialized[#temp0:0] : &:r0_1 +#-----| r0_3(glval) = FunctionAddress[StructInitFromTemplate] : +#-----| v0_4(void) = Call[StructInitFromTemplate] : func:r0_3, this:r0_1 +#-----| mu0_5(unknown) = ^CallSideEffect : ~m? +#-----| mu0_6(StructInitFromTemplate) = ^IndirectMayWriteSideEffect[-1] : &:r0_1 +#-----| r0_7(StructInitFromTemplate) = Load[#temp0:0] : &:r0_1, ~m? +#-----| mu0_8(StructInitFromTemplate) = Store[StructInitFromTemplateVar] : &:r2909_3, r0_7 +# 2909| v2909_4(void) = ReturnVoid : +# 2909| v2909_5(void) = AliasedUse : ~m? +# 2909| v2909_6(void) = ExitFunction : + +# 2912| double VariableTemplate +# 2912| Block 0 +# 2912| v2912_1(void) = EnterFunction : +# 2912| mu2912_2(unknown) = AliasedDefinition : +# 2912| r2912_3(glval) = VariableAddress[VariableTemplate] : +# 2912| r2912_4(double) = Constant[42.0] : +# 2912| mu2912_5(double) = Store[VariableTemplate] : &:r2912_3, r2912_4 +# 2912| v2912_6(void) = ReturnVoid : +# 2912| v2912_7(void) = AliasedUse : ~m? +# 2912| v2912_8(void) = ExitFunction : + +# 2915| double VariableTemplateFunc(double) +# 2915| Block 0 +# 2915| v2915_1(void) = EnterFunction : +# 2915| mu2915_2(unknown) = AliasedDefinition : +# 2915| mu2915_3(unknown) = InitializeNonLocal : +# 2915| r2915_4(glval) = VariableAddress[x] : +# 2915| mu2915_5(double) = InitializeParameter[x] : &:r2915_4 +# 2916| r2916_1(glval) = VariableAddress[#return] : +# 2916| r2916_2(double) = Constant[42.0] : +# 2916| r2916_3(glval) = VariableAddress[x] : +# 2916| r2916_4(double) = Load[x] : &:r2916_3, ~m? +# 2916| r2916_5(double) = Add : r2916_2, r2916_4 +# 2916| mu2916_6(double) = Store[#return] : &:r2916_1, r2916_5 +# 2915| r2915_6(glval) = VariableAddress[#return] : +# 2915| v2915_7(void) = ReturnValue : &:r2915_6, ~m? +# 2915| v2915_8(void) = AliasedUse : ~m? +# 2915| v2915_9(void) = ExitFunction : + +# 2919| int VariableTemplateFuncUse +# 2919| Block 0 +# 2919| v2919_1(void) = EnterFunction : +# 2919| mu2919_2(unknown) = AliasedDefinition : +# 2919| r2919_3(glval) = VariableAddress[VariableTemplateFuncUse] : +# 2919| r2919_4(glval) = FunctionAddress[VariableTemplateFunc] : +# 2919| r2919_5(double) = Constant[2.299999999999999822] : +# 2919| r2919_6(double) = Call[VariableTemplateFunc] : func:r2919_4, 0:r2919_5 +# 2919| mu2919_7(unknown) = ^CallSideEffect : ~m? +# 2919| r2919_8(int) = Convert : r2919_6 +# 2919| mu2919_9(int) = Store[VariableTemplateFuncUse] : &:r2919_3, r2919_8 +# 2919| v2919_10(void) = ReturnVoid : +# 2919| v2919_11(void) = AliasedUse : ~m? +# 2919| v2919_12(void) = ExitFunction : + ir23.cpp: # 1| bool consteval_1() # 1| Block 0 diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected index 984335d12515..e6556b1a89c2 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected @@ -29,8 +29,6 @@ postWithInFlow | try_catch.cpp:7:8:7:8 | call to exception | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition -| ir.cpp:726:6:726:13 | TryCatch | *0 | ir.cpp:737:22:737:22 | *s | Parameters with overlapping positions. | -| ir.cpp:726:6:726:13 | TryCatch | *0 | ir.cpp:740:24:740:24 | *e | Parameters with overlapping positions. | uniqueParameterNodePosition uniqueContentApprox identityLocalStep diff --git a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/Buildless.c b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/Buildless.c new file mode 100644 index 000000000000..3d01a28fae0a --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/Buildless.c @@ -0,0 +1,28 @@ +// semmle-extractor-options: --expect_errors + +void test_float_double1(float f, double d) { + float r1 = f * f; // GOOD + float r2 = f * d; // GOOD + double r3 = f * f; // BAD + double r4 = f * d; // GOOD + + float f1 = fabsf(f * f); // GOOD + float f2 = fabsf(f * d); // GOOD + double f3 = fabs(f * f); // BAD [NOT DETECTED] + double f4 = fabs(f * d); // GOOD +} + +double fabs(double f); +float fabsf(float f); + +void test_float_double2(float f, double d) { + float r1 = f * f; // GOOD + float r2 = f * d; // GOOD + double r3 = f * f; // BAD + double r4 = f * d; // GOOD + + float f1 = fabsf(f * f); // GOOD + float f2 = fabsf(f * d); // GOOD + double f3 = fabs(f * f); // BAD [NOT DETECTED] + double f4 = fabs(f * d); // GOOD +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/IntMultToLong.expected b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/IntMultToLong.expected index 2806aaa809fe..05b2b7e1ea3c 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/IntMultToLong.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/IntMultToLong/IntMultToLong.expected @@ -1,3 +1,5 @@ +| Buildless.c:6:17:6:21 | ... * ... | Multiplication result may overflow 'float' before it is converted to 'double'. | +| Buildless.c:21:17:21:21 | ... * ... | Multiplication result may overflow 'float' before it is converted to 'double'. | | IntMultToLong.c:4:10:4:14 | ... * ... | Multiplication result may overflow 'int' before it is converted to 'long long'. | | IntMultToLong.c:7:16:7:20 | ... * ... | Multiplication result may overflow 'int' before it is converted to 'long long'. | | IntMultToLong.c:18:19:18:23 | ... * ... | Multiplication result may overflow 'float' before it is converted to 'double'. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/WrongTypeFormatArguments.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/WrongTypeFormatArguments.expected index 745f2f790f79..8eefcc95a24f 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/WrongTypeFormatArguments.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/WrongTypeFormatArguments.expected @@ -1 +1,3 @@ +| second.cpp:26:18:26:39 | ... - ... | This format specifier for type 'int' does not match the argument type 'long'. | +| second.cpp:29:18:29:39 | ... - ... | This format specifier for type 'unsigned int' does not match the argument type 'long'. | | tests.c:7:18:7:18 | 1 | This format specifier for type 'char *' does not match the argument type 'int'. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/first.cpp b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/first.cpp new file mode 100644 index 000000000000..8973ace78c76 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/first.cpp @@ -0,0 +1,3 @@ + +// defines type size_t plausibly +typedef unsigned long size_t; diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/second.cpp b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/second.cpp new file mode 100644 index 000000000000..0345e8352bee --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/WrongTypeFormatArguments/Buildless/second.cpp @@ -0,0 +1,32 @@ +// semmle-extractor-options: --expect_errors + +int printf(const char * format, ...); + +// defines type `myFunctionPointerType`, referencing `size_t` +typedef size_t (*myFunctionPointerType) (); + +void test_size_t() { + size_t s = 0; + + printf("%zd", s); // GOOD + printf("%zi", s); // GOOD + printf("%zu", s); // GOOD (we generally permit signedness changes) + printf("%zx", s); // GOOD (we generally permit signedness changes) + printf("%d", s); // BAD [NOT DETECTED] + printf("%ld", s); // DUBIOUS [NOT DETECTED] + printf("%lld", s); // DUBIOUS [NOT DETECTED] + printf("%u", s); // BAD [NOT DETECTED] + + char buffer[1024]; + + printf("%zd", &buffer[1023] - buffer); // GOOD + printf("%zi", &buffer[1023] - buffer); // GOOD + printf("%zu", &buffer[1023] - buffer); // GOOD + printf("%zx", &buffer[1023] - buffer); // GOOD + printf("%d", &buffer[1023] - buffer); // BAD + printf("%ld", &buffer[1023] - buffer); // DUBIOUS [NOT DETECTED] + printf("%lld", &buffer[1023] - buffer); // DUBIOUS [NOT DETECTED] + printf("%u", &buffer[1023] - buffer); // BAD + // (for the `%ld` and `%lld` cases, the signedness and type sizes match, `%zd` would be most correct + // and robust but the developer may know enough to make this safe) +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.expected b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.expected new file mode 100644 index 000000000000..a87d2ddbd1bc --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.expected @@ -0,0 +1,2 @@ +| conftest.c.c:4:3:4:8 | call to strlen | This expression has no effect (because $@ has no external side effects). | conftest.h:3:8:3:13 | strlen | strlen | +| conftest_abc.c:4:3:4:8 | call to strlen | This expression has no effect (because $@ has no external side effects). | conftest.h:3:8:3:13 | strlen | strlen | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.qlref b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.qlref new file mode 100644 index 000000000000..82a90f5413a9 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.qlref @@ -0,0 +1 @@ +Likely Bugs/Likely Typos/ExprHasNoEffect.ql diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c new file mode 100644 index 000000000000..2e067f5c4336 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main2() { + strlen(""); // GOOD: conftest files are ignored + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c.c new file mode 100644 index 000000000000..4ff7c2253358 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main3() { + strlen(""); // BAD: not a `conftest` file, as `conftest` is not directly followed by the extension or a sequence of numbers. + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.cpp b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.cpp new file mode 100644 index 000000000000..7b8edf642610 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.cpp @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main4() { + strlen(""); // GOOD: conftest files are ignored + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.h b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.h new file mode 100644 index 000000000000..9cf6f7e0d9f8 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.h @@ -0,0 +1,3 @@ +typedef long long size_t; + +size_t strlen(const char *s); diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest123.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest123.c new file mode 100644 index 000000000000..b227d53ad2a3 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest123.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main5() { + strlen(""); // GOOD: conftest files are ignored + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest_abc.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest_abc.c new file mode 100644 index 000000000000..88215d7434cd --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest_abc.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main1() { + strlen(""); // BAD: not a `conftest` file, as `conftest` is not directly followed by the extension or a sequence of numbers. + return 0; +} diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/interpretElement.expected b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/ExprHasNoEffect.expected similarity index 100% rename from cpp/ql/test/library-tests/dataflow/models-as-data/interpretElement.expected rename to cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/ExprHasNoEffect.expected diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/ExprHasNoEffect.qlref b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/ExprHasNoEffect.qlref new file mode 100644 index 000000000000..82a90f5413a9 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/ExprHasNoEffect.qlref @@ -0,0 +1 @@ +Likely Bugs/Likely Typos/ExprHasNoEffect.ql diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/testfile.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/testfile.c new file mode 100644 index 000000000000..fef0dff82a50 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/meson-private/tmp_abc/testfile.c @@ -0,0 +1,8 @@ +typedef long long size_t; + +size_t strlen(const char *s); + +int main() { + strlen(""); // GOOD: the source file occurs in a `meson-private/tmp.../testfile.c` directory + return 0; +} diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/SuspiciousAddWithSizeof.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/SuspiciousAddWithSizeof.expected index 8b67b3f8bc91..dbff4230f254 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/SuspiciousAddWithSizeof.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/SuspiciousAddWithSizeof.expected @@ -1,3 +1,5 @@ +| buildless.cpp:5:15:5:25 | sizeof(int) | Suspicious sizeof offset in a pointer arithmetic expression. The type of the pointer is $@. | file://:0:0:0:0 | const short * | const short * | +| buildless.cpp:6:13:6:23 | sizeof(int) | Suspicious sizeof offset in a pointer arithmetic expression. The type of the pointer is $@. | file://:0:0:0:0 | const int * | const int * | | test.cpp:6:30:6:40 | sizeof(int) | Suspicious sizeof offset in a pointer arithmetic expression. The type of the pointer is $@. | file://:0:0:0:0 | int * | int * | | test.cpp:14:30:14:40 | sizeof(int) | Suspicious sizeof offset in a pointer arithmetic expression. The type of the pointer is $@. | file://:0:0:0:0 | int * | int * | | test.cpp:22:25:22:35 | sizeof(int) | Suspicious sizeof offset in a pointer arithmetic expression. The type of the pointer is $@. | file://:0:0:0:0 | int * | int * | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/buildless.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/buildless.cpp new file mode 100644 index 000000000000..b0b590fba699 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/buildless.cpp @@ -0,0 +1,10 @@ +// semmle-extractor-options: --expect_errors + +void test_buildless(const char *p_c, const short *p_short, const int *p_int, const uint8_t *p_8, const uint16_t *p_16, const uint32_t *p_32) { + *(p_c + sizeof(int)); // GOOD (`sizeof(char)` is 1) + *(p_short + sizeof(int)); // BAD + *(p_int + sizeof(int)); // BAD + *(p_8 + sizeof(int)); // GOOD (`sizeof(uint8_t)` is 1, but there's an error in the type) + *(p_16 + sizeof(int)); // BAD [NOT DETECTED] + *(p_32 + sizeof(int)); // BAD [NOT DETECTED] +} diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/test.cpp index f2ad227417e5..fa2bd934cca2 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-468/semmle/SuspiciousAddWithSizeof/test.cpp @@ -93,3 +93,9 @@ class MyTest8Class myChar * const myCharsPointer; myInt * const myIntsPointer; }; + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; + +void test_buildless(const char *p_c, const short *p_short, const int *p_int, const uint8_t *p_8, const uint16_t *p_16, const uint32_t *p_32); diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected index 4ae072c6ce48..3958656bb4b6 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected @@ -1,3 +1,24 @@ +#select +| tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:63:13:63:26 | *call to getenv | *call to getenv | +| tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:64:13:64:26 | *call to getenv | *call to getenv | +| tests2.cpp:65:13:65:30 | *call to getenv | tests2.cpp:65:13:65:30 | *call to getenv | tests2.cpp:65:13:65:30 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:65:13:65:30 | *call to getenv | *call to getenv | +| tests2.cpp:66:13:66:34 | *call to getenv | tests2.cpp:66:13:66:34 | *call to getenv | tests2.cpp:66:13:66:34 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:66:13:66:34 | *call to getenv | *call to getenv | +| tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | This operation exposes system data from $@. | tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | *call to mysql_get_client_info | +| tests2.cpp:81:14:81:19 | *buffer | tests2.cpp:78:18:78:38 | *call to mysql_get_client_info | tests2.cpp:81:14:81:19 | *buffer | This operation exposes system data from $@. | tests2.cpp:78:18:78:38 | *call to mysql_get_client_info | *call to mysql_get_client_info | +| tests2.cpp:82:14:82:20 | *global1 | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | tests2.cpp:82:14:82:20 | *global1 | This operation exposes system data from $@. | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | *call to mysql_get_client_info | +| tests2.cpp:93:14:93:17 | *str1 | tests2.cpp:91:42:91:45 | *str1 | tests2.cpp:93:14:93:17 | *str1 | This operation exposes system data from $@. | tests2.cpp:91:42:91:45 | *str1 | *str1 | +| tests2.cpp:102:14:102:15 | *pw | tests2.cpp:101:8:101:15 | *call to getpwuid | tests2.cpp:102:14:102:15 | *pw | This operation exposes system data from $@. | tests2.cpp:101:8:101:15 | *call to getpwuid | *call to getpwuid | +| tests2.cpp:111:14:111:19 | *ptr | tests2.cpp:109:12:109:17 | *call to getenv | tests2.cpp:111:14:111:19 | *ptr | This operation exposes system data from $@. | tests2.cpp:109:12:109:17 | *call to getenv | *call to getenv | +| tests2.cpp:138:23:138:34 | *message_data | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:138:23:138:34 | *message_data | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | +| tests2.cpp:144:33:144:40 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:144:33:144:40 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | +| tests2.cpp:147:20:147:27 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:147:20:147:27 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | +| tests2.cpp:155:32:155:39 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:155:32:155:39 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | +| tests2.cpp:158:20:158:27 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:158:20:158:27 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | +| tests_sockets.cpp:39:19:39:22 | *path | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | This operation exposes system data from $@. | tests_sockets.cpp:26:15:26:20 | *call to getenv | *call to getenv | +| tests_sockets.cpp:43:20:43:23 | *path | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | This operation exposes system data from $@. | tests_sockets.cpp:26:15:26:20 | *call to getenv | *call to getenv | +| tests_sockets.cpp:76:19:76:22 | *path | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:76:19:76:22 | *path | This operation exposes system data from $@. | tests_sockets.cpp:63:15:63:20 | *call to getenv | *call to getenv | +| tests_sockets.cpp:80:20:80:23 | *path | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:80:20:80:23 | *path | This operation exposes system data from $@. | tests_sockets.cpp:63:15:63:20 | *call to getenv | *call to getenv | +| tests_sysconf.cpp:39:19:39:25 | *pathbuf | tests_sysconf.cpp:36:21:36:27 | confstr output argument | tests_sysconf.cpp:39:19:39:25 | *pathbuf | This operation exposes system data from $@. | tests_sysconf.cpp:36:21:36:27 | confstr output argument | confstr output argument | edges | tests2.cpp:50:13:50:19 | **global1 | tests2.cpp:82:14:82:20 | *global1 | provenance | | | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | tests2.cpp:50:13:50:19 | **global1 | provenance | | @@ -12,16 +33,16 @@ edges | tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:14:111:19 | *ptr | provenance | | | tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:17:111:19 | *ptr | provenance | | | tests2.cpp:111:17:111:19 | *ptr | tests2.cpp:111:14:111:19 | *ptr | provenance | | -| tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] *0 in zmq_msg_init_data [Return] | provenance | | -| tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:138:23:138:34 | *message_data | provenance | | +| tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] *0 in zmq_msg_init_data [Return] | provenance | MaD:4 | +| tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:138:23:138:34 | *message_data | provenance | Sink:MaD:2 | | tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:143:34:143:45 | *message_data | provenance | | | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:134:2:134:30 | *... = ... | provenance | | -| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:144:33:144:40 | *& ... | provenance | | -| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:147:20:147:27 | *& ... | provenance | | -| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:155:32:155:39 | *& ... | provenance | | -| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:158:20:158:27 | *& ... | provenance | | +| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:144:33:144:40 | *& ... | provenance | Sink:MaD:3 | +| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:147:20:147:27 | *& ... | provenance | Sink:MaD:1 | +| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:155:32:155:39 | *& ... | provenance | Sink:MaD:3 | +| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:158:20:158:27 | *& ... | provenance | Sink:MaD:1 | | tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | provenance | | -| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | provenance | | +| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | provenance | MaD:4 | | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:26:15:26:20 | *call to getenv | provenance | | | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | provenance | | | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | provenance | | @@ -29,6 +50,11 @@ edges | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:76:19:76:22 | *path | provenance | | | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:80:20:80:23 | *path | provenance | | | tests_sysconf.cpp:36:21:36:27 | confstr output argument | tests_sysconf.cpp:39:19:39:25 | *pathbuf | provenance | | +models +| 1 | Sink: ; ; false; zmq_msg_send; ; ; Argument[*0]; remote-sink; manual | +| 2 | Sink: ; ; false; zmq_send; ; ; Argument[*1]; remote-sink; manual | +| 3 | Sink: ; ; false; zmq_sendmsg; ; ; Argument[*1]; remote-sink; manual | +| 4 | Summary: ; ; false; zmq_msg_init_data; ; ; Argument[*1]; Argument[*0]; taint; manual | nodes | tests2.cpp:50:13:50:19 | **global1 | semmle.label | **global1 | | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | semmle.label | *call to mysql_get_client_info | @@ -75,24 +101,3 @@ nodes | tests_sysconf.cpp:39:19:39:25 | *pathbuf | semmle.label | *pathbuf | subpaths | tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] *0 in zmq_msg_init_data [Return] | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | -#select -| tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:63:13:63:26 | *call to getenv | *call to getenv | -| tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:64:13:64:26 | *call to getenv | *call to getenv | -| tests2.cpp:65:13:65:30 | *call to getenv | tests2.cpp:65:13:65:30 | *call to getenv | tests2.cpp:65:13:65:30 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:65:13:65:30 | *call to getenv | *call to getenv | -| tests2.cpp:66:13:66:34 | *call to getenv | tests2.cpp:66:13:66:34 | *call to getenv | tests2.cpp:66:13:66:34 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:66:13:66:34 | *call to getenv | *call to getenv | -| tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | This operation exposes system data from $@. | tests2.cpp:80:14:80:34 | *call to mysql_get_client_info | *call to mysql_get_client_info | -| tests2.cpp:81:14:81:19 | *buffer | tests2.cpp:78:18:78:38 | *call to mysql_get_client_info | tests2.cpp:81:14:81:19 | *buffer | This operation exposes system data from $@. | tests2.cpp:78:18:78:38 | *call to mysql_get_client_info | *call to mysql_get_client_info | -| tests2.cpp:82:14:82:20 | *global1 | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | tests2.cpp:82:14:82:20 | *global1 | This operation exposes system data from $@. | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | *call to mysql_get_client_info | -| tests2.cpp:93:14:93:17 | *str1 | tests2.cpp:91:42:91:45 | *str1 | tests2.cpp:93:14:93:17 | *str1 | This operation exposes system data from $@. | tests2.cpp:91:42:91:45 | *str1 | *str1 | -| tests2.cpp:102:14:102:15 | *pw | tests2.cpp:101:8:101:15 | *call to getpwuid | tests2.cpp:102:14:102:15 | *pw | This operation exposes system data from $@. | tests2.cpp:101:8:101:15 | *call to getpwuid | *call to getpwuid | -| tests2.cpp:111:14:111:19 | *ptr | tests2.cpp:109:12:109:17 | *call to getenv | tests2.cpp:111:14:111:19 | *ptr | This operation exposes system data from $@. | tests2.cpp:109:12:109:17 | *call to getenv | *call to getenv | -| tests2.cpp:138:23:138:34 | *message_data | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:138:23:138:34 | *message_data | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | -| tests2.cpp:144:33:144:40 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:144:33:144:40 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | -| tests2.cpp:147:20:147:27 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:147:20:147:27 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | -| tests2.cpp:155:32:155:39 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:155:32:155:39 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | -| tests2.cpp:158:20:158:27 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:158:20:158:27 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv | -| tests_sockets.cpp:39:19:39:22 | *path | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | This operation exposes system data from $@. | tests_sockets.cpp:26:15:26:20 | *call to getenv | *call to getenv | -| tests_sockets.cpp:43:20:43:23 | *path | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | This operation exposes system data from $@. | tests_sockets.cpp:26:15:26:20 | *call to getenv | *call to getenv | -| tests_sockets.cpp:76:19:76:22 | *path | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:76:19:76:22 | *path | This operation exposes system data from $@. | tests_sockets.cpp:63:15:63:20 | *call to getenv | *call to getenv | -| tests_sockets.cpp:80:20:80:23 | *path | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:80:20:80:23 | *path | This operation exposes system data from $@. | tests_sockets.cpp:63:15:63:20 | *call to getenv | *call to getenv | -| tests_sysconf.cpp:39:19:39:25 | *pathbuf | tests_sysconf.cpp:36:21:36:27 | confstr output argument | tests_sysconf.cpp:39:19:39:25 | *pathbuf | This operation exposes system data from $@. | tests_sysconf.cpp:36:21:36:27 | confstr output argument | confstr output argument | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.qlref b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.qlref index 0c88835bf1fc..c6024387d343 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.qlref +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.qlref @@ -1 +1,4 @@ -Security/CWE/CWE-497/ExposedSystemData.ql \ No newline at end of file +query: Security/CWE/CWE-497/ExposedSystemData.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests2.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests2.cpp index c22d74b7a758..4167f6903af4 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests2.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests2.cpp @@ -47,7 +47,7 @@ int val(); // --- test cases --- -const char *global1 = mysql_get_client_info(); +const char *global1 = mysql_get_client_info(); // $ Source const char *global2 = "abc"; void test7() @@ -55,15 +55,15 @@ void test7() int sock = socket(val(), val(), val()); // tests for a strict implementation of CWE-497 - std::cout << getenv("HOME"); // BAD: outputs HOME environment variable [NOT DETECTED] - std::cout << "PATH = " << getenv("PATH") << "."; // BAD: outputs PATH environment variable [NOT DETECTED] + std::cout << getenv("HOME"); // $ MISSING: Alert // outputs HOME environment variable + std::cout << "PATH = " << getenv("PATH") << "."; // $ MISSING: Alert // outputs PATH environment variable std::cout << "PATHPATHPATH"; // GOOD: not system data // tests for a more pragmatic implementation of CWE-497 - send(sock, getenv("HOME"), val(), val()); // BAD - send(sock, getenv("PATH"), val(), val()); // BAD - send(sock, getenv("USERNAME"), val(), val()); // BAD - send(sock, getenv("APP_PASSWORD"), val(), val()); // BAD + send(sock, getenv("HOME"), val(), val()); // $ Alert + send(sock, getenv("PATH"), val(), val()); // $ Alert + send(sock, getenv("USERNAME"), val(), val()); // $ Alert + send(sock, getenv("APP_PASSWORD"), val(), val()); // $ Alert send(sock, getenv("HARMLESS"), val(), val()); // GOOD: harmless information send(sock, "HOME", val(), val()); // GOOD: not system data send(sock, "PATH", val(), val()); // GOOD: not system data @@ -75,11 +75,11 @@ void test7() { char buffer[256]; - strcpy(buffer, mysql_get_client_info()); + strcpy(buffer, mysql_get_client_info()); // $ Source - send(sock, mysql_get_client_info(), val(), val()); // BAD - send(sock, buffer, val(), val()); // BAD - send(sock, global1, val(), val()); // BAD + send(sock, mysql_get_client_info(), val(), val()); // $ Alert + send(sock, buffer, val(), val()); // $ Alert + send(sock, global1, val(), val()); // $ Alert send(sock, global2, val(), val()); // GOOD: not system data } @@ -88,9 +88,9 @@ void test7() const char *str1 = "123456"; const char *str2 = "abcdef"; - mysql_real_connect(sock, val(), val(), str1, val(), val(), val(), val()); + mysql_real_connect(sock, val(), val(), str1, val(), val(), val(), val()); // $ Source - send(sock, str1, val(), val()); // BAD + send(sock, str1, val(), val()); // $ Alert send(sock, str2, val(), val()); // GOOD: not system data } @@ -98,17 +98,17 @@ void test7() { passwd *pw; - pw = getpwuid(val()); - send(sock, pw->pw_passwd, val(), val()); // BAD + pw = getpwuid(val()); // $ Source + send(sock, pw->pw_passwd, val(), val()); // $ Alert } // tests for containers { container c1, c2; - c1.ptr = getenv("MY_SECRET_TOKEN"); + c1.ptr = getenv("MY_SECRET_TOKEN"); // $ Source c2.ptr = ""; - send(sock, c1.ptr, val(), val()); // BAD + send(sock, c1.ptr, val(), val()); // $ Alert send(sock, c2.ptr, val(), val()); // GOOD: not system data } } @@ -131,20 +131,20 @@ void test_zmq(void *remoteSocket) size_t message_len; // prepare data - message_data = getenv("HOME"); + message_data = getenv("HOME"); // $ Source message_len = strlen(message_data) + 1; // send as data - if (zmq_send(socket, message_data, message_len, 0) >= 0) { // BAD: outputs HOME environment variable + if (zmq_send(socket, message_data, message_len, 0) >= 0) { // $ Alert: outputs HOME environment variable // ... } // send as message if (zmq_msg_init_data(&message, message_data, message_len, 0, 0)) { - if (zmq_sendmsg(remoteSocket, &message, message_len)) { // BAD: outputs HOME environment variable + if (zmq_sendmsg(remoteSocket, &message, message_len)) { // $ Alert: outputs HOME environment variable // ... } - if (zmq_msg_send(&message, remoteSocket, message_len)) { // BAD: outputs HOME environment variable + if (zmq_msg_send(&message, remoteSocket, message_len)) { // $ Alert: outputs HOME environment variable // ... } } @@ -152,10 +152,10 @@ void test_zmq(void *remoteSocket) // send as message (alternative path) if (zmq_msg_init_size(&message, message_len) == 0) { memcpy(zmq_msg_data(&message), message_data, message_len); - if (zmq_sendmsg(remoteSocket,&message, message_len)) { // BAD: outputs HOME environment variable + if (zmq_sendmsg(remoteSocket,&message, message_len)) { // $ Alert: outputs HOME environment variable // ... } - if (zmq_msg_send(&message, remoteSocket, message_len)) { // BAD: outputs HOME environment variable + if (zmq_msg_send(&message, remoteSocket, message_len)) { // $ Alert: outputs HOME environment variable // ... } } diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sockets.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sockets.cpp index e7e8d9fe89f6..f5c47f1a9e6e 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sockets.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sockets.cpp @@ -23,7 +23,7 @@ void test_sockets1() int sockfd; sockaddr addr_remote; char *msg = "Hello, world!"; - char *path = getenv("PATH"); + char *path = getenv("PATH"); // $ Source // create socket sockfd = socket(AF_INET, SOCK_STREAM, 0); @@ -36,11 +36,11 @@ void test_sockets1() // send something using 'send' if (send(sockfd, msg, strlen(msg) + 1, 0) < 0) return; // GOOD - if (send(sockfd, path, strlen(path) + 1, 0) < 0) return; // BAD - + if (send(sockfd, path, strlen(path) + 1, 0) < 0) return; // $ Alert + // send something using 'write' if (write(sockfd, msg, strlen(msg) + 1) < 0) return; // GOOD - if (write(sockfd, path, strlen(path) + 1) < 0) return; // BAD + if (write(sockfd, path, strlen(path) + 1) < 0) return; // $ Alert // clean up // ... @@ -49,9 +49,9 @@ void test_sockets1() int mksocket() { int fd; - + fd = socket(AF_INET, SOCK_STREAM, 0); - + return fd; } @@ -60,7 +60,7 @@ void test_sockets2() int sockfd; sockaddr addr_remote; char *msg = "Hello, world!"; - char *path = getenv("PATH"); + char *path = getenv("PATH"); // $ Source // create socket sockfd = mksocket(); @@ -73,11 +73,11 @@ void test_sockets2() // send something using 'send' if (send(sockfd, msg, strlen(msg) + 1, 0) < 0) return; // GOOD - if (send(sockfd, path, strlen(path) + 1, 0) < 0) return; // BAD - + if (send(sockfd, path, strlen(path) + 1, 0) < 0) return; // $ Alert + // send something using 'write' if (write(sockfd, msg, strlen(msg) + 1) < 0) return; // GOOD - if (write(sockfd, path, strlen(path) + 1) < 0) return; // BAD + if (write(sockfd, path, strlen(path) + 1) < 0) return; // $ Alert // clean up // ... diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sysconf.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sysconf.cpp index 0c0cbcc68d36..e0b4e7dc291f 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sysconf.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/tests_sysconf.cpp @@ -21,7 +21,7 @@ void test_sc_1() int value = sysconf(_SC_CHILD_MAX); printf("_SC_CHILD_MAX = %i\n", _SC_CHILD_MAX); // GOOD - printf("_SC_CHILD_MAX = %i\n", value); // BAD [NOT DETECTED] + printf("_SC_CHILD_MAX = %i\n", value); // $ MISSING: Alert } void test_sc_2() @@ -33,9 +33,9 @@ void test_sc_2() pathbuf = (char *)malloc(n); if (pathbuf != NULL) { - confstr(_CS_PATH, pathbuf, n); + confstr(_CS_PATH, pathbuf, n); // $ Source - printf("path: %s", pathbuf); // BAD [NOT DETECTED] - write(get_fd(), pathbuf, strlen(pathbuf)); // BAD + printf("path: %s", pathbuf); // $ MISSING: Alert + write(get_fd(), pathbuf, strlen(pathbuf)); // $ Alert } } diff --git a/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/assignments.ql b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/assignments.ql new file mode 100644 index 000000000000..199385e830e5 --- /dev/null +++ b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/assignments.ql @@ -0,0 +1,177 @@ +class Expr extends @expr { + string toString() { none() } +} + +class Location extends @location { + string toString() { none() } +} + +newtype TAddedElement = + TAssignment(CompoundAssignmentExpr e) or + TLhs(CompoundAssignmentExpr e) or + TRhs(CompoundAssignmentExpr e) + +module Fresh = QlBuiltins::NewEntity; + +class TNewExpr = @expr or Fresh::EntityId; + +class NewExpr extends TNewExpr { + string toString() { none() } +} + +class TNewControlFlowElement = @control_flow_element or Fresh::EntityId; + +class NewControlFlowElement extends TNewControlFlowElement { + string toString() { none() } +} + +class TypeOrRef extends @type_or_ref { + string toString() { none() } +} + +class Callable extends @callable { + string toString() { none() } +} + +class Accessible extends @accessible { + string toString() { none() } +} + +predicate assignmentKind(int kind) { + // | 63 = @simple_assign_expr + // | 80 = @add_event_expr + // | 81 = @remove_event_expr + // | 83 = @local_var_decl_expr + kind = [63, 80, 81, 83] +} + +predicate compoundAssignmentKind(int kind) { + // | 64 = @assign_add_expr + // | 65 = @assign_sub_expr + // | 66 = @assign_mul_expr + // | 67 = @assign_div_expr + // | 68 = @assign_rem_expr + // | 69 = @assign_and_expr + // | 70 = @assign_xor_expr + // | 71 = @assign_or_expr + // | 72 = @assign_lshift_expr + // | 73 = @assign_rshift_expr + // | 119 = @assign_coalesce_expr + // | 134 = @assign_urshift_expr + kind = [64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 119, 134] +} + +int getOperatorKindFromAssignmentKind(int kind) { + kind = 64 and result = 44 // @assign_add_expr -> @add_expr + or + kind = 65 and result = 45 // @assign_sub_expr -> @sub_expr + or + kind = 66 and result = 41 // @assign_mul_expr -> @mul_expr + or + kind = 67 and result = 42 // @assign_div_expr -> @div_expr + or + kind = 68 and result = 43 // @assign_rem_expr -> @rem_expr + or + kind = 69 and result = 54 // @assign_and_expr -> @bit_and_expr + or + kind = 70 and result = 55 // @assign_xor_expr -> @bit_xor_expr + or + kind = 71 and result = 56 // @assign_or_expr -> @bit_or_expr + or + kind = 72 and result = 46 // @assign_lshift_expr -> @lshift_expr + or + kind = 73 and result = 47 // @assign_rshift_expr -> @rshift_expr + or + kind = 119 and result = 61 // @assign_coalesce_expr -> @coalesce_expr + or + kind = 134 and result = 133 // @assign_urshift_expr -> @urshift_expr +} + +predicate isAssignment(Expr ass) { + exists(int kind | assignmentKind(kind) | expressions(ass, kind, _)) +} + +class CompoundAssignmentExpr extends Expr { + CompoundAssignmentExpr() { + exists(int kind | compoundAssignmentKind(kind) | expressions(this, kind, _)) + } +} + +query predicate new_expressions(NewExpr e, int kind, TypeOrRef t) { + expressions(e, kind, t) + or + // Introduce expanded expression nodes. + exists(CompoundAssignmentExpr compound, int kind0, Expr e1, int kind1 | + expressions(compound, kind0, t) and + expressions(e1, kind1, _) and + expr_parent(e1, 0, compound) + | + Fresh::map(TAssignment(compound)) = e and kind = 63 + or + Fresh::map(TLhs(compound)) = e and kind = kind1 + or + Fresh::map(TRhs(compound)) = e and kind = getOperatorKindFromAssignmentKind(kind0) + ) +} + +query predicate new_expr_parent(NewExpr e, int child, NewControlFlowElement parent) { + if isAssignment(parent) + then + // Swap children for assignments, local variable declarations and add/remove event. + child = 0 and expr_parent(e, 1, parent) + or + child = 1 and expr_parent(e, 0, parent) + else ( + exists(CompoundAssignmentExpr compound | + Fresh::map(TAssignment(compound)) = e and child = 2 and parent = compound + or + Fresh::map(TLhs(compound)) = e and child = 1 and parent = Fresh::map(TAssignment(compound)) + or + Fresh::map(TRhs(compound)) = e and child = 0 and parent = Fresh::map(TAssignment(compound)) + or + expr_parent(e, child, compound) and parent = Fresh::map(TRhs(compound)) + ) + or + // Copy the expr_parent relation except for compound assignment edges. + expr_parent(e, child, parent) and not parent instanceof CompoundAssignmentExpr + ) +} + +query predicate new_expr_location(NewExpr e, Location loc) { + expr_location(e, loc) + or + exists(CompoundAssignmentExpr compound | + Fresh::map(TAssignment(compound)) = e and expr_location(compound, loc) + or + Fresh::map(TLhs(compound)) = e and + exists(Expr child | expr_location(child, loc) and expr_parent(child, 0, compound)) + or + Fresh::map(TRhs(compound)) = e and expr_location(compound, loc) + ) +} + +query predicate new_expr_call(NewExpr e, Callable c) { + expr_call(e, c) and not e instanceof CompoundAssignmentExpr + or + exists(CompoundAssignmentExpr compound | + Fresh::map(TRhs(compound)) = e and expr_call(compound, c) + ) +} + +query predicate new_dynamic_member_name(NewExpr e, string name) { + dynamic_member_name(e, name) and not e instanceof CompoundAssignmentExpr + or + exists(CompoundAssignmentExpr compound | + Fresh::map(TRhs(compound)) = e and dynamic_member_name(compound, name) + ) +} + +query predicate new_expr_access(NewExpr e, Accessible a) { + expr_access(e, a) + or + exists(CompoundAssignmentExpr compound, Expr access | + expr_parent(access, 0, compound) and + expr_access(access, a) and + Fresh::map(TLhs(compound)) = e + ) +} diff --git a/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/old.dbscheme b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/old.dbscheme new file mode 100644 index 000000000000..19b8cc3e2dc7 --- /dev/null +++ b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/old.dbscheme @@ -0,0 +1,1504 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/semmlecode.csharp.dbscheme b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..e73ca2c93df8 --- /dev/null +++ b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/semmlecode.csharp.dbscheme @@ -0,0 +1,1489 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/upgrade.properties b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/upgrade.properties new file mode 100644 index 000000000000..41d57dd067bd --- /dev/null +++ b/csharp/downgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/upgrade.properties @@ -0,0 +1,8 @@ +description: Remove operation kinds for operations, introduce expanded assignments and rotate assignment child expressions. +compatibility: partial +expr_parent.rel: run assignments.ql new_expr_parent +expressions.rel: run assignments.ql new_expressions +expr_location.rel: run assignments.ql new_expr_location +expr_call.rel: run assignments.ql new_expr_call +dynamic_member_name.rel: run assignments.ql new_dynamic_member_name +expr_access.rel: run assignments.ql new_expr_access diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs index 61d0ea4260db..ef5bcd4753bb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs @@ -12,16 +12,18 @@ internal interface IDotNetCliInvoker /// /// A minimal environment for running the .NET CLI. - /// + /// /// DOTNET_CLI_UI_LANGUAGE: The .NET CLI language is set to English to avoid localized output. /// MSBUILDDISABLENODEREUSE: To ensure clean environment for each build. /// DOTNET_SKIP_FIRST_TIME_EXPERIENCE: To skip first time experience messages. + /// DOTNET_CLI_TELEMETRY_OPTOUT: To skip any dotnet telemetry: it's unnecessary and can even cause issues. /// static ReadOnlyDictionary MinimalEnvironment { get; } = new(new Dictionary { {"DOTNET_CLI_UI_LANGUAGE", "en"}, {"MSBUILDDISABLENODEREUSE", "1"}, - {"DOTNET_SKIP_FIRST_TIME_EXPERIENCE", "true"} + {"DOTNET_SKIP_FIRST_TIME_EXPERIENCE", "true"}, + {"DOTNET_CLI_TELEMETRY_OPTOUT", "1"} }); /// diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs index f3e2e510cd64..67e49b2919c2 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs @@ -22,26 +22,12 @@ public static Assignment Create(ExpressionNodeInfo info) protected override void PopulateExpression(TextWriter trapFile) { - var operatorKind = OperatorKind; - if (operatorKind.HasValue) - { - // Convert assignment such as `a += b` into `a = a + b`. - var simpleAssignExpr = new Expression(new ExpressionInfo(Context, Type, Location, ExprKind.SIMPLE_ASSIGN, this, 2, isCompilerGenerated: true, null)); - Create(Context, Syntax.Left, simpleAssignExpr, 1); - var opexpr = new Expression(new ExpressionInfo(Context, Type, Location, operatorKind.Value, simpleAssignExpr, 0, isCompilerGenerated: true, null)); - Create(Context, Syntax.Left, opexpr, 0, isCompilerGenerated: true); - Create(Context, Syntax.Right, opexpr, 1); - opexpr.OperatorCall(trapFile, Syntax); - } - else - { - Create(Context, Syntax.Left, this, 1); - Create(Context, Syntax.Right, this, 0); + Create(Context, Syntax.Left, this, 0); + Create(Context, Syntax.Right, this, 1); - if (Kind == ExprKind.ADD_EVENT || Kind == ExprKind.REMOVE_EVENT) - { - OperatorCall(trapFile, Syntax); - } + if (Kind != ExprKind.SIMPLE_ASSIGN && Kind != ExprKind.ASSIGN_COALESCE) + { + OperatorCall(trapFile, Syntax); } } @@ -108,56 +94,5 @@ private static ExprKind GetKind(Context cx, AssignmentExpressionSyntax syntax) return kind; } - - /// - /// Gets the kind of this assignment operator (null if the - /// assignment is not an assignment operator). For example, the operator - /// kind of `*=` is `*`. - /// - private ExprKind? OperatorKind - { - get - { - var kind = Kind; - if (kind == ExprKind.REMOVE_EVENT || kind == ExprKind.ADD_EVENT || kind == ExprKind.SIMPLE_ASSIGN) - return null; - - if (CallType.AdjustKind(kind) == ExprKind.OPERATOR_INVOCATION) - return ExprKind.OPERATOR_INVOCATION; - - switch (kind) - { - case ExprKind.ASSIGN_ADD: - return ExprKind.ADD; - case ExprKind.ASSIGN_AND: - return ExprKind.BIT_AND; - case ExprKind.ASSIGN_DIV: - return ExprKind.DIV; - case ExprKind.ASSIGN_LSHIFT: - return ExprKind.LSHIFT; - case ExprKind.ASSIGN_MUL: - return ExprKind.MUL; - case ExprKind.ASSIGN_OR: - return ExprKind.BIT_OR; - case ExprKind.ASSIGN_REM: - return ExprKind.REM; - case ExprKind.ASSIGN_RSHIFT: - return ExprKind.RSHIFT; - case ExprKind.ASSIGN_URSHIFT: - return ExprKind.URSHIFT; - case ExprKind.ASSIGN_SUB: - return ExprKind.SUB; - case ExprKind.ASSIGN_XOR: - return ExprKind.BIT_XOR; - case ExprKind.ASSIGN_COALESCE: - return ExprKind.NULL_COALESCING; - default: - Context.ModelError(Syntax, $"Couldn't unfold assignment of type {kind}"); - return ExprKind.UNKNOWN; - } - } - } - - public new CallType CallType => GetCallType(Context, Syntax); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs index 92e2b910f992..63024cd47fcb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs @@ -83,30 +83,31 @@ protected override void PopulateExpression(TextWriter trapFile) { var assignmentInfo = new ExpressionNodeInfo(Context, init, this, child++).SetKind(ExprKind.SIMPLE_ASSIGN); var assignmentEntity = new Expression(assignmentInfo); - var typeInfoRight = Context.GetTypeInfo(assignment.Right); - if (typeInfoRight.Type is null) - // The type may be null for nested initializers such as - // ```csharp - // new ClassWithArrayField() { As = { [0] = a } } - // ``` - // In this case we take the type from the assignment - // `As = { [0] = a }` instead - typeInfoRight = assignmentInfo.TypeInfo; - CreateFromNode(new ExpressionNodeInfo(Context, assignment.Right, assignmentEntity, 0, typeInfoRight)); - var target = Context.GetSymbolInfo(assignment.Left); // If the target is null, then assume that this is an array initializer (of the form `[...] = ...`) - var access = target.Symbol is null ? - new Expression(new ExpressionNodeInfo(Context, assignment.Left, assignmentEntity, 1).SetKind(ExprKind.ARRAY_ACCESS)) : - Access.Create(new ExpressionNodeInfo(Context, assignment.Left, assignmentEntity, 1), target.Symbol, false, Context.CreateEntity(target.Symbol)); + new Expression(new ExpressionNodeInfo(Context, assignment.Left, assignmentEntity, 0).SetKind(ExprKind.ARRAY_ACCESS)) : + Access.Create(new ExpressionNodeInfo(Context, assignment.Left, assignmentEntity, 0), target.Symbol, false, Context.CreateEntity(target.Symbol)); if (assignment.Left is ImplicitElementAccessSyntax iea) { // An array/indexer initializer of the form `[...] = ...` access.PopulateArguments(trapFile, iea.ArgumentList.Arguments, 0); } + + var typeInfoRight = Context.GetTypeInfo(assignment.Right); + if (typeInfoRight.Type is null) + { + // The type may be null for nested initializers such as + // ```csharp + // new ClassWithArrayField() { As = { [0] = a } } + // ``` + // In this case we take the type from the assignment + // `As = { [0] = a }` instead + typeInfoRight = assignmentInfo.TypeInfo; + } + CreateFromNode(new ExpressionNodeInfo(Context, assignment.Right, assignmentEntity, 1, typeInfoRight)); } else { diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs index a6f94f533387..1fdf03171b9f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs @@ -41,11 +41,11 @@ protected override void PopulateExpression(TextWriter trapFile) var loc = Context.CreateLocation(init.GetLocation()); var assignment = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.SIMPLE_ASSIGN, objectInitializer, child++, isCompilerGenerated: false, null)); - Create(Context, init.Expression, assignment, 0); Property.Create(Context, property); - - var access = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.PROPERTY_ACCESS, assignment, 1, isCompilerGenerated: false, null)); + var access = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.PROPERTY_ACCESS, assignment, 0, isCompilerGenerated: false, null)); trapFile.expr_access(access, propEntity); + + Create(Context, init.Expression, assignment, 1); } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs index 85a1ceda47ca..aadf06f2dee6 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs @@ -94,12 +94,12 @@ protected Expression DeclareRangeVariable(Context cx, IExpressionParentEntity pa child ); - Expression.Create(cx, Expr, decl, 0); - var nameLoc = cx.CreateLocation(name.GetLocation()); - var access = new Expression(new ExpressionInfo(cx, type, nameLoc, ExprKind.LOCAL_VARIABLE_ACCESS, decl, 1, isCompilerGenerated: false, null)); + var access = new Expression(new ExpressionInfo(cx, type, nameLoc, ExprKind.LOCAL_VARIABLE_ACCESS, decl, 0, isCompilerGenerated: false, null)); cx.TrapWriter.Writer.expr_access(access, LocalVariable.Create(cx, variableSymbol)); + Expression.Create(cx, Expr, decl, 1); + return decl; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs index c44f9e2b9468..47ecee3e037e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs @@ -176,11 +176,11 @@ public static VariableDeclaration CreateDeclarator(Context cx, VariableDeclarato if (d.Initializer is not null) { - Create(cx, d.Initializer.Value, ret, 0); - // Create an access - var access = new Expression(new ExpressionInfo(cx, type, localVar.Location, ExprKind.LOCAL_VARIABLE_ACCESS, ret, 1, isCompilerGenerated: false, null)); + var access = new Expression(new ExpressionInfo(cx, type, localVar.Location, ExprKind.LOCAL_VARIABLE_ACCESS, ret, 0, isCompilerGenerated: false, null)); cx.TrapWriter.Writer.expr_access(access, localVar); + + Create(cx, d.Initializer.Value, ret, 1); } if (d.Parent is VariableDeclarationSyntax decl) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs index 329115f11c7a..708c00d2f736 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs @@ -116,9 +116,9 @@ private Expression AddInitializerAssignment(TextWriter trapFile, ExpressionSynta { var type = Symbol.GetAnnotatedType(); var simpleAssignExpr = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.SIMPLE_ASSIGN, this, child++, isCompilerGenerated: true, constValue)); - Expression.CreateFromNode(new ExpressionNodeInfo(Context, initializer, simpleAssignExpr, 0)); - var access = new Expression(new ExpressionInfo(Context, type, Location, ExprKind.FIELD_ACCESS, simpleAssignExpr, 1, isCompilerGenerated: true, constValue)); + var access = new Expression(new ExpressionInfo(Context, type, Location, ExprKind.FIELD_ACCESS, simpleAssignExpr, 0, isCompilerGenerated: true, constValue)); trapFile.expr_access(access, this); + Expression.CreateFromNode(new ExpressionNodeInfo(Context, initializer, simpleAssignExpr, 1)); return access; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs index 57eb5efc0070..988ca843927e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs @@ -94,9 +94,9 @@ public override void Populate(TextWriter trapFile) var loc = Context.CreateLocation(initializer!.GetLocation()); var annotatedType = AnnotatedTypeSymbol.CreateNotAnnotated(Symbol.Type); var simpleAssignExpr = new Expression(new ExpressionInfo(Context, annotatedType, loc, ExprKind.SIMPLE_ASSIGN, this, child++, isCompilerGenerated: true, null)); - Expression.CreateFromNode(new ExpressionNodeInfo(Context, initializer.Value, simpleAssignExpr, 0)); - var access = new Expression(new ExpressionInfo(Context, annotatedType, Location, ExprKind.PROPERTY_ACCESS, simpleAssignExpr, 1, isCompilerGenerated: true, null)); + var access = new Expression(new ExpressionInfo(Context, annotatedType, Location, ExprKind.PROPERTY_ACCESS, simpleAssignExpr, 0, isCompilerGenerated: true, null)); trapFile.expr_access(access, this); + Expression.CreateFromNode(new ExpressionNodeInfo(Context, initializer.Value, simpleAssignExpr, 1)); if (!Symbol.IsStatic) { This.CreateImplicit(Context, Symbol.ContainingType, Location, access, -1); diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 86119cf97c44..f7107d18c014 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.64 + +No user-facing changes. + +## 1.7.63 + +No user-facing changes. + +## 1.7.62 + +No user-facing changes. + ## 1.7.61 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.62.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.62.md new file mode 100644 index 000000000000..562bfa74f97c --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.62.md @@ -0,0 +1,3 @@ +## 1.7.62 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.63.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.63.md new file mode 100644 index 000000000000..057091389bb2 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.63.md @@ -0,0 +1,3 @@ +## 1.7.63 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.64.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.64.md new file mode 100644 index 000000000000..47290bbbeb30 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.64.md @@ -0,0 +1,3 @@ +## 1.7.64 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 4235ee0663a2..f41e954c9ae2 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.61 +lastReleaseVersion: 1.7.64 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index e2e83cd47e70..006ef851567f 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.61 +version: 1.7.65-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 86119cf97c44..f7107d18c014 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.64 + +No user-facing changes. + +## 1.7.63 + +No user-facing changes. + +## 1.7.62 + +No user-facing changes. + ## 1.7.61 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql b/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql index e09d00807e6d..ca153bfb97db 100644 --- a/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql +++ b/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql @@ -16,16 +16,9 @@ import experimental.code.csharp.Cryptography.NonCryptographicHashes from Variable v, Literal l, LoopStmt loop, Expr additional_xor where maybeUsedInFnvFunction(v, _, _, loop) and - ( - exists(BitwiseXorExpr xor2 | xor2.getAnOperand() = l and additional_xor = xor2 | - loop.getAControlFlowExitNode().getASuccessor*() = xor2.getAControlFlowNode() and - xor2.getAnOperand() = v.getAnAccess() - ) - or - exists(AssignXorExpr xor2 | xor2.getAnOperand() = l and additional_xor = xor2 | - loop.getAControlFlowExitNode().getASuccessor*() = xor2.getAControlFlowNode() and - xor2.getAnOperand() = v.getAnAccess() - ) + exists(BitwiseXorOperation xor2 | xor2.getAnOperand() = l and additional_xor = xor2 | + loop.getAControlFlowExitNode().getASuccessor*() = xor2.getAControlFlowNode() and + xor2.getAnOperand() = v.getAnAccess() ) select l, "This literal is used in an $@ after an FNV-like hash calculation with variable $@.", additional_xor, "additional xor", v, v.toString() diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.62.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.62.md new file mode 100644 index 000000000000..562bfa74f97c --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.62.md @@ -0,0 +1,3 @@ +## 1.7.62 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.63.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.63.md new file mode 100644 index 000000000000..057091389bb2 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.63.md @@ -0,0 +1,3 @@ +## 1.7.63 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.64.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.64.md new file mode 100644 index 000000000000..47290bbbeb30 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.64.md @@ -0,0 +1,3 @@ +## 1.7.64 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 4235ee0663a2..f41e954c9ae2 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.61 +lastReleaseVersion: 1.7.64 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index ebbb19fa683f..af5fd98f58af 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.61 +version: 1.7.65-dev groups: - csharp - solorigate diff --git a/csharp/ql/examples/snippets/integer_literal.ql b/csharp/ql/examples/snippets/integer_literal.ql index 4546c1d174ba..36791fc8c374 100644 --- a/csharp/ql/examples/snippets/integer_literal.ql +++ b/csharp/ql/examples/snippets/integer_literal.ql @@ -9,5 +9,5 @@ import csharp from IntegerLiteral literal -where literal.getValue().toInt() = 0 +where literal.getIntValue() = 0 select literal diff --git a/csharp/ql/integration-tests/all-platforms/autobuild/global.json b/csharp/ql/integration-tests/all-platforms/autobuild/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/autobuild/global.json +++ b/csharp/ql/integration-tests/all-platforms/autobuild/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/autobuild_slnx/global.json b/csharp/ql/integration-tests/all-platforms/autobuild_slnx/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/autobuild_slnx/global.json +++ b/csharp/ql/integration-tests/all-platforms/autobuild_slnx/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/binlog/global.json b/csharp/ql/integration-tests/all-platforms/binlog/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/binlog/global.json +++ b/csharp/ql/integration-tests/all-platforms/binlog/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/binlog_multiple/global.json b/csharp/ql/integration-tests/all-platforms/binlog_multiple/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/binlog_multiple/global.json +++ b/csharp/ql/integration-tests/all-platforms/binlog_multiple/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/blazor/BlazorTest/global.json b/csharp/ql/integration-tests/all-platforms/blazor/BlazorTest/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor/BlazorTest/global.json +++ b/csharp/ql/integration-tests/all-platforms/blazor/BlazorTest/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/blazor/Files.expected b/csharp/ql/integration-tests/all-platforms/blazor/Files.expected index cd035dc7ae99..0ced64bd9b02 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/blazor/Files.expected @@ -14,12 +14,12 @@ | BlazorTest/obj/Debug/net10.0/EmbeddedAttribute.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/EmbeddedAttribute.cs | | BlazorTest/obj/Debug/net10.0/ValidatableTypeAttribute.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/ValidatableTypeAttribute.cs | | BlazorTest/obj/Debug/net10.0/generated/Microsoft.AspNetCore.App.SourceGenerators/Microsoft.AspNetCore.SourceGenerators.PublicProgramSourceGenerator/PublicTopLevelProgram.Generated.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.AspNetCore.App.SourceGenerators/Microsoft.AspNetCore.SourceGenerators.PublicProgramSourceGenerator/PublicTopLevelProgram.Generated.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_App_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_App_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Layout_MainLayout_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Layout_MainLayout_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Layout_NavMenu_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Layout_NavMenu_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_MyInput_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_MyInput_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_MyOutput_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_MyOutput_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_Error_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_Error_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Routes_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Routes_razor.g.cs | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components__Imports_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components__Imports_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/App_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/App_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Layout/MainLayout_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Layout/MainLayout_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Layout/NavMenu_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Layout/NavMenu_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/MyInput_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/MyInput_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/MyOutput_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/MyOutput_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/Error_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/Error_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Routes_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Routes_razor.g.cs | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/_Imports_razor.g.cs:0:0:0:0 | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/_Imports_razor.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/blazor/XSS.expected b/csharp/ql/integration-tests/all-platforms/blazor/XSS.expected index 6518eb74a9fc..d4f4f7cdd736 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor/XSS.expected +++ b/csharp/ql/integration-tests/all-platforms/blazor/XSS.expected @@ -3,8 +3,8 @@ | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | $@ flows to here and is written to HTML or JavaScript. | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | User-provided value | | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | $@ flows to here and is written to HTML or JavaScript. | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | User-provided value | edges -| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | provenance | Src:MaD:2 MaD:3 | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | BlazorTest/Components/MyOutput.razor:5:53:5:57 | access to property Value | provenance | Sink:MaD:1 | +| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | provenance | Src:MaD:2 MaD:3 | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | BlazorTest/Components/MyOutput.razor:5:53:5:57 | access to property Value | provenance | Sink:MaD:1 | models | 1 | Sink: Microsoft.AspNetCore.Components; MarkupString; false; MarkupString; (System.String); ; Argument[0]; html-injection; manual | | 2 | Source: Microsoft.AspNetCore.Components; SupplyParameterFromQueryAttribute; false; ; ; Attribute.Getter; ReturnValue; remote; manual | @@ -14,5 +14,5 @@ nodes | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | semmle.label | access to property UrlParam | | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | semmle.label | access to property QueryParam | | BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | semmle.label | access to property QueryParam : String | -| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | semmle.label | call to method TypeCheck : String | +| BlazorTest/obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | semmle.label | call to method TypeCheck : String | subpaths diff --git a/csharp/ql/integration-tests/all-platforms/blazor/global.json b/csharp/ql/integration-tests/all-platforms/blazor/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor/global.json +++ b/csharp/ql/integration-tests/all-platforms/blazor/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/BlazorTest/global.json b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/BlazorTest/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/BlazorTest/global.json +++ b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/BlazorTest/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/Files.expected b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/Files.expected index 8811ba1c0c7e..a9028ed1530b 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/Files.expected @@ -8,13 +8,13 @@ | BlazorTest/Components/Routes.razor | | BlazorTest/Components/_Imports.razor | | BlazorTest/Program.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_App_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Layout_MainLayout_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Layout_NavMenu_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_MyInput_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_MyOutput_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_Error_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Routes_razor.g.cs | -| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components__Imports_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/App_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Layout/MainLayout_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Layout/NavMenu_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/MyInput_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/MyOutput_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/Error_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Routes_razor.g.cs | +| [...]/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/_Imports_razor.g.cs | | test-db/working/implicitUsings/GlobalUsings.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/XSS.expected b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/XSS.expected index f20ca29ee85e..2ebaaaaf6aa3 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/XSS.expected +++ b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/XSS.expected @@ -3,8 +3,8 @@ | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | $@ flows to here and is written to HTML or JavaScript. | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | User-provided value | | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | $@ flows to here and is written to HTML or JavaScript. | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | User-provided value | edges -| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | test-db/working/razor/AC613014E59A413B9538FF8068364499/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | provenance | Src:MaD:2 MaD:3 | -| test-db/working/razor/AC613014E59A413B9538FF8068364499/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | BlazorTest/Components/MyOutput.razor:5:53:5:57 | access to property Value | provenance | Sink:MaD:1 | +| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | test-db/working/razor/AC613014E59A413B9538FF8068364499/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | provenance | Src:MaD:2 MaD:3 | +| test-db/working/razor/AC613014E59A413B9538FF8068364499/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | BlazorTest/Components/MyOutput.razor:5:53:5:57 | access to property Value | provenance | Sink:MaD:1 | models | 1 | Sink: Microsoft.AspNetCore.Components; MarkupString; false; MarkupString; (System.String); ; Argument[0]; html-injection; manual | | 2 | Source: Microsoft.AspNetCore.Components; SupplyParameterFromQueryAttribute; false; ; ; Attribute.Getter; ReturnValue; remote; manual | @@ -14,5 +14,5 @@ nodes | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | semmle.label | access to property UrlParam | | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | semmle.label | access to property QueryParam | | BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | semmle.label | access to property QueryParam : String | -| test-db/working/razor/AC613014E59A413B9538FF8068364499/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | semmle.label | call to method TypeCheck : String | +| test-db/working/razor/AC613014E59A413B9538FF8068364499/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components/Pages/TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck : String | semmle.label | call to method TypeCheck : String | subpaths diff --git a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json +++ b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/conditional_compilation/global.json b/csharp/ql/integration-tests/all-platforms/conditional_compilation/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/conditional_compilation/global.json +++ b/csharp/ql/integration-tests/all-platforms/conditional_compilation/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected index ef4dc96389f2..4acc37f35e11 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected @@ -5,4 +5,4 @@ | obj/Debug/net10.0/cshtml.GlobalUsings.g.cs:0:0:0:0 | obj/Debug/net10.0/cshtml.GlobalUsings.g.cs | | obj/Debug/net10.0/cshtml.RazorAssemblyInfo.cs:0:0:0:0 | obj/Debug/net10.0/cshtml.RazorAssemblyInfo.cs | | obj/Debug/net10.0/generated/Microsoft.AspNetCore.App.SourceGenerators/Microsoft.AspNetCore.SourceGenerators.PublicProgramSourceGenerator/PublicTopLevelProgram.Generated.g.cs:0:0:0:0 | obj/Debug/net10.0/generated/Microsoft.AspNetCore.App.SourceGenerators/Microsoft.AspNetCore.SourceGenerators.PublicProgramSourceGenerator/PublicTopLevelProgram.Generated.g.cs | -| obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views_Home_Index_cshtml.g.cs:0:0:0:0 | obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views_Home_Index_cshtml.g.cs | +| obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views/Home/Index_cshtml.g.cs:0:0:0:0 | obj/Debug/net10.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views/Home/Index_cshtml.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/global.json b/csharp/ql/integration-tests/all-platforms/cshtml/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml/global.json +++ b/csharp/ql/integration-tests/all-platforms/cshtml/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected index 2b6fea50a1bf..c5ff8dee7941 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected @@ -1,4 +1,4 @@ | Program.cs | | Views/Home/Index.cshtml | | test-db/working/implicitUsings/GlobalUsings.g.cs | -| test-db/working/razor/EC52D77FE9BF67AD10C5C3F248392316/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views_Home_Index_cshtml.g.cs | +| test-db/working/razor/EC52D77FE9BF67AD10C5C3F248392316/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views/Home/Index_cshtml.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/global.json b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/global.json +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/global.json b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/global.json +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/global.json b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/global.json +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected index 4059eb703336..843b4651ea32 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected @@ -1,4 +1,4 @@ | Program.cs | | Views/Home/Index.cshtml | | test-db/working/implicitUsings/GlobalUsings.g.cs | -| test-db/working/razor/EC52D77FE9BF67AD10C5C3F248392316/[...]/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views_Home_Index_cshtml.g.cs | +| test-db/working/razor/EC52D77FE9BF67AD10C5C3F248392316/[...]/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views/Home/Index_cshtml.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/global.json b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/global.json index 2715bb6d9b02..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/global.json +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "6.0.418" + "version": "10.0.201" } -} \ No newline at end of file +} diff --git a/csharp/ql/integration-tests/all-platforms/diag_dotnet_incompatible/global.json b/csharp/ql/integration-tests/all-platforms/diag_dotnet_incompatible/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_dotnet_incompatible/global.json +++ b/csharp/ql/integration-tests/all-platforms/diag_dotnet_incompatible/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/global.json b/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/global.json +++ b/csharp/ql/integration-tests/all-platforms/diag_missing_project_files/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/diag_missing_xamarin_sdk/global.json b/csharp/ql/integration-tests/all-platforms/diag_missing_xamarin_sdk/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_missing_xamarin_sdk/global.json +++ b/csharp/ql/integration-tests/all-platforms/diag_missing_xamarin_sdk/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/global.json b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/global.json +++ b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_build/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_build/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_build/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_build/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_no_args_inject/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_no_args_inject/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_no_args_inject/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_no_args_inject/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_pack/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_pack/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_pack/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_pack/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_publish/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_publish/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_publish/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_publish/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_run/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_run/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_run/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_run/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/source_generator/global.json b/csharp/ql/integration-tests/all-platforms/source_generator/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/source_generator/global.json +++ b/csharp/ql/integration-tests/all-platforms/source_generator/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone/global.json b/csharp/ql/integration-tests/all-platforms/standalone/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_buildless_option/global.json b/csharp/ql/integration-tests/all-platforms/standalone_buildless_option/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_buildless_option/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_buildless_option/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/global.json b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json b/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_resx/global.json b/csharp/ql/integration-tests/all-platforms/standalone_resx/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_resx/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_resx/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_slnx/global.json b/csharp/ql/integration-tests/all-platforms/standalone_slnx/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_slnx/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_slnx/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected b/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected index aa00093875ce..3419be9d7e8d 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected @@ -1,50 +1,50 @@ -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Design.dll:0:0:0:0 | System.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Formats.Nrbf.dll:0:0:0:0 | System.Formats.Nrbf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Private.Windows.Core.dll:0:0:0:0 | System.Private.Windows.Core, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Private.Windows.GdiPlus.dll:0:0:0:0 | System.Private.Windows.GdiPlus, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Primitives.dll:0:0:0:0 | System.Windows.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Design.dll:0:0:0:0 | System.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Formats.Nrbf.dll:0:0:0:0 | System.Formats.Nrbf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Private.Windows.Core.dll:0:0:0:0 | System.Private.Windows.Core, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Private.Windows.GdiPlus.dll:0:0:0:0 | System.Private.Windows.GdiPlus, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Primitives.dll:0:0:0:0 | System.Windows.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_winforms/global.json b/csharp/ql/integration-tests/all-platforms/standalone_winforms/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_winforms/global.json +++ b/csharp/ql/integration-tests/all-platforms/standalone_winforms/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected index 67a23e2d9413..13f7aedb656e 100644 --- a/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected +++ b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected @@ -1,7 +1,7 @@ | 0 | /noconfig | | 1 | /unsafe- | | 2 | /checked- | -| 3 | /nowarn:1701,1702,1701,1702 | +| 3 | /nowarn:1701,1702,1701,1702,8002 | | 4 | /fullpaths | | 5 | /nostdlib+ | | 6 | /errorreport:prompt | @@ -10,173 +10,173 @@ | 9 | /preferreduilang:en | | 10 | /highentropyva+ | | 11 | /nullable:enable | -| 12 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/Microsoft.CSharp.dll | -| 13 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Core.dll | -| 14 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.dll | -| 15 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/Microsoft.Win32.Primitives.dll | -| 16 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.dll | -| 17 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/mscorlib.dll | -| 18 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/netstandard.dll | -| 19 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.AppContext.dll | -| 20 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Buffers.dll | -| 21 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Collections.Concurrent.dll | -| 22 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Collections.dll | -| 23 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Collections.Immutable.dll | -| 24 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Collections.NonGeneric.dll | -| 25 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Collections.Specialized.dll | -| 26 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ComponentModel.Annotations.dll | -| 27 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ComponentModel.DataAnnotations.dll | -| 28 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ComponentModel.dll | -| 29 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ComponentModel.EventBasedAsync.dll | -| 30 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ComponentModel.Primitives.dll | -| 31 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ComponentModel.TypeConverter.dll | -| 32 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Configuration.dll | -| 33 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Console.dll | -| 34 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Core.dll | -| 35 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Data.Common.dll | -| 36 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Data.DataSetExtensions.dll | -| 37 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Data.dll | -| 38 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.Contracts.dll | -| 39 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.Debug.dll | -| 40 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.DiagnosticSource.dll | -| 41 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.FileVersionInfo.dll | -| 42 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.Process.dll | -| 43 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.StackTrace.dll | -| 44 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll | -| 45 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.Tools.dll | -| 46 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.TraceSource.dll | -| 47 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Diagnostics.Tracing.dll | -| 48 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.dll | -| 49 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Drawing.dll | -| 50 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Drawing.Primitives.dll | -| 51 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Dynamic.Runtime.dll | -| 52 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Formats.Asn1.dll | -| 53 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Formats.Tar.dll | -| 54 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Globalization.Calendars.dll | -| 55 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Globalization.dll | -| 56 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Globalization.Extensions.dll | -| 57 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Compression.Brotli.dll | -| 58 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Compression.dll | -| 59 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Compression.FileSystem.dll | -| 60 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Compression.ZipFile.dll | -| 61 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.dll | -| 62 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.FileSystem.AccessControl.dll | -| 63 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.FileSystem.dll | -| 64 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.FileSystem.DriveInfo.dll | -| 65 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.FileSystem.Primitives.dll | -| 66 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.FileSystem.Watcher.dll | -| 67 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.IsolatedStorage.dll | -| 68 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.MemoryMappedFiles.dll | -| 69 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Pipelines.dll | -| 70 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Pipes.AccessControl.dll | -| 71 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.Pipes.dll | -| 72 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.IO.UnmanagedMemoryStream.dll | -| 73 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Linq.AsyncEnumerable.dll | -| 74 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Linq.dll | -| 75 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Linq.Expressions.dll | -| 76 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Linq.Parallel.dll | -| 77 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Linq.Queryable.dll | -| 78 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Memory.dll | -| 79 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.dll | -| 80 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Http.dll | -| 81 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Http.Json.dll | -| 82 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.HttpListener.dll | -| 83 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Mail.dll | -| 84 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.NameResolution.dll | -| 85 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.NetworkInformation.dll | -| 86 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Ping.dll | -| 87 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Primitives.dll | -| 88 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Quic.dll | -| 89 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Requests.dll | -| 90 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Security.dll | -| 91 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.ServerSentEvents.dll | -| 92 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.ServicePoint.dll | -| 93 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.Sockets.dll | -| 94 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.WebClient.dll | -| 95 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.WebHeaderCollection.dll | -| 96 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.WebProxy.dll | -| 97 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.WebSockets.Client.dll | -| 98 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Net.WebSockets.dll | -| 99 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Numerics.dll | -| 100 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Numerics.Vectors.dll | -| 101 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ObjectModel.dll | -| 102 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.DispatchProxy.dll | -| 103 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.dll | -| 104 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.Emit.dll | -| 105 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.Emit.ILGeneration.dll | -| 106 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.Emit.Lightweight.dll | -| 107 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.Extensions.dll | -| 108 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.Metadata.dll | -| 109 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.Primitives.dll | -| 110 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Reflection.TypeExtensions.dll | -| 111 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Resources.Reader.dll | -| 112 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Resources.ResourceManager.dll | -| 113 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Resources.Writer.dll | -| 114 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll | -| 115 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll | -| 116 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.dll | -| 117 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Extensions.dll | -| 118 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Handles.dll | -| 119 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.dll | -| 120 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll | -| 121 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| 122 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Intrinsics.dll | -| 123 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Loader.dll | -| 124 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Numerics.dll | -| 125 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Serialization.dll | -| 126 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Formatters.dll | -| 127 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Json.dll | -| 128 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Primitives.dll | -| 129 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Xml.dll | -| 130 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.AccessControl.dll | -| 131 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Claims.dll | -| 132 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.Algorithms.dll | -| 133 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.Cng.dll | -| 134 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.Csp.dll | -| 135 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.dll | -| 136 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.Encoding.dll | -| 137 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.OpenSsl.dll | -| 138 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.Primitives.dll | -| 139 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Cryptography.X509Certificates.dll | -| 140 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.dll | -| 141 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Principal.dll | -| 142 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.Principal.Windows.dll | -| 143 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Security.SecureString.dll | -| 144 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ServiceModel.Web.dll | -| 145 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ServiceProcess.dll | -| 146 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Text.Encoding.CodePages.dll | -| 147 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Text.Encoding.dll | -| 148 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Text.Encoding.Extensions.dll | -| 149 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Text.Encodings.Web.dll | -| 150 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Text.Json.dll | -| 151 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Text.RegularExpressions.dll | -| 152 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.AccessControl.dll | -| 153 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Channels.dll | -| 154 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.dll | -| 155 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Overlapped.dll | -| 156 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Tasks.Dataflow.dll | -| 157 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Tasks.dll | -| 158 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Tasks.Extensions.dll | -| 159 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Tasks.Parallel.dll | -| 160 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Thread.dll | -| 161 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.ThreadPool.dll | -| 162 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Threading.Timer.dll | -| 163 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Transactions.dll | -| 164 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Transactions.Local.dll | -| 165 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.ValueTuple.dll | -| 166 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Web.dll | -| 167 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Web.HttpUtility.dll | -| 168 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Windows.dll | -| 169 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.dll | -| 170 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.Linq.dll | -| 171 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.ReaderWriter.dll | -| 172 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.Serialization.dll | -| 173 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.XDocument.dll | -| 174 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.XmlDocument.dll | -| 175 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.XmlSerializer.dll | -| 176 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.XPath.dll | -| 177 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/System.Xml.XPath.XDocument.dll | -| 178 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/ref/net10.0/WindowsBase.dll | +| 12 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/Microsoft.CSharp.dll | +| 13 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Core.dll | +| 14 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.dll | +| 15 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/Microsoft.Win32.Primitives.dll | +| 16 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.dll | +| 17 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/mscorlib.dll | +| 18 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/netstandard.dll | +| 19 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.AppContext.dll | +| 20 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Buffers.dll | +| 21 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Collections.Concurrent.dll | +| 22 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Collections.dll | +| 23 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Collections.Immutable.dll | +| 24 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Collections.NonGeneric.dll | +| 25 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Collections.Specialized.dll | +| 26 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ComponentModel.Annotations.dll | +| 27 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ComponentModel.DataAnnotations.dll | +| 28 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ComponentModel.dll | +| 29 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ComponentModel.EventBasedAsync.dll | +| 30 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ComponentModel.Primitives.dll | +| 31 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ComponentModel.TypeConverter.dll | +| 32 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Configuration.dll | +| 33 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Console.dll | +| 34 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Core.dll | +| 35 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Data.Common.dll | +| 36 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Data.DataSetExtensions.dll | +| 37 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Data.dll | +| 38 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.Contracts.dll | +| 39 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.Debug.dll | +| 40 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.DiagnosticSource.dll | +| 41 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.FileVersionInfo.dll | +| 42 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.Process.dll | +| 43 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.StackTrace.dll | +| 44 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll | +| 45 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.Tools.dll | +| 46 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.TraceSource.dll | +| 47 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Diagnostics.Tracing.dll | +| 48 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.dll | +| 49 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Drawing.dll | +| 50 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Drawing.Primitives.dll | +| 51 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Dynamic.Runtime.dll | +| 52 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Formats.Asn1.dll | +| 53 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Formats.Tar.dll | +| 54 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Globalization.Calendars.dll | +| 55 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Globalization.dll | +| 56 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Globalization.Extensions.dll | +| 57 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Compression.Brotli.dll | +| 58 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Compression.dll | +| 59 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Compression.FileSystem.dll | +| 60 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Compression.ZipFile.dll | +| 61 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.dll | +| 62 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.FileSystem.AccessControl.dll | +| 63 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.FileSystem.dll | +| 64 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.FileSystem.DriveInfo.dll | +| 65 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.FileSystem.Primitives.dll | +| 66 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.FileSystem.Watcher.dll | +| 67 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.IsolatedStorage.dll | +| 68 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.MemoryMappedFiles.dll | +| 69 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Pipelines.dll | +| 70 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Pipes.AccessControl.dll | +| 71 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.Pipes.dll | +| 72 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.IO.UnmanagedMemoryStream.dll | +| 73 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Linq.AsyncEnumerable.dll | +| 74 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Linq.dll | +| 75 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Linq.Expressions.dll | +| 76 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Linq.Parallel.dll | +| 77 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Linq.Queryable.dll | +| 78 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Memory.dll | +| 79 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.dll | +| 80 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Http.dll | +| 81 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Http.Json.dll | +| 82 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.HttpListener.dll | +| 83 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Mail.dll | +| 84 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.NameResolution.dll | +| 85 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.NetworkInformation.dll | +| 86 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Ping.dll | +| 87 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Primitives.dll | +| 88 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Quic.dll | +| 89 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Requests.dll | +| 90 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Security.dll | +| 91 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.ServerSentEvents.dll | +| 92 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.ServicePoint.dll | +| 93 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.Sockets.dll | +| 94 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.WebClient.dll | +| 95 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.WebHeaderCollection.dll | +| 96 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.WebProxy.dll | +| 97 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.WebSockets.Client.dll | +| 98 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Net.WebSockets.dll | +| 99 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Numerics.dll | +| 100 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Numerics.Vectors.dll | +| 101 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ObjectModel.dll | +| 102 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.DispatchProxy.dll | +| 103 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.dll | +| 104 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.Emit.dll | +| 105 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.Emit.ILGeneration.dll | +| 106 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.Emit.Lightweight.dll | +| 107 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.Extensions.dll | +| 108 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.Metadata.dll | +| 109 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.Primitives.dll | +| 110 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Reflection.TypeExtensions.dll | +| 111 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Resources.Reader.dll | +| 112 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Resources.ResourceManager.dll | +| 113 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Resources.Writer.dll | +| 114 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll | +| 115 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll | +| 116 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.dll | +| 117 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Extensions.dll | +| 118 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Handles.dll | +| 119 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.dll | +| 120 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll | +| 121 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll | +| 122 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Intrinsics.dll | +| 123 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Loader.dll | +| 124 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Numerics.dll | +| 125 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Serialization.dll | +| 126 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Formatters.dll | +| 127 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Json.dll | +| 128 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Primitives.dll | +| 129 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Xml.dll | +| 130 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.AccessControl.dll | +| 131 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Claims.dll | +| 132 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.Algorithms.dll | +| 133 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.Cng.dll | +| 134 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.Csp.dll | +| 135 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.dll | +| 136 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.Encoding.dll | +| 137 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.OpenSsl.dll | +| 138 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.Primitives.dll | +| 139 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Cryptography.X509Certificates.dll | +| 140 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.dll | +| 141 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Principal.dll | +| 142 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.Principal.Windows.dll | +| 143 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Security.SecureString.dll | +| 144 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ServiceModel.Web.dll | +| 145 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ServiceProcess.dll | +| 146 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Text.Encoding.CodePages.dll | +| 147 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Text.Encoding.dll | +| 148 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Text.Encoding.Extensions.dll | +| 149 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Text.Encodings.Web.dll | +| 150 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Text.Json.dll | +| 151 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Text.RegularExpressions.dll | +| 152 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.AccessControl.dll | +| 153 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Channels.dll | +| 154 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.dll | +| 155 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Overlapped.dll | +| 156 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Tasks.Dataflow.dll | +| 157 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Tasks.dll | +| 158 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Tasks.Extensions.dll | +| 159 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Tasks.Parallel.dll | +| 160 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Thread.dll | +| 161 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.ThreadPool.dll | +| 162 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Threading.Timer.dll | +| 163 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Transactions.dll | +| 164 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Transactions.Local.dll | +| 165 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.ValueTuple.dll | +| 166 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Web.dll | +| 167 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Web.HttpUtility.dll | +| 168 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Windows.dll | +| 169 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.dll | +| 170 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.Linq.dll | +| 171 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.ReaderWriter.dll | +| 172 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.Serialization.dll | +| 173 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.XDocument.dll | +| 174 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.XmlDocument.dll | +| 175 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.XmlSerializer.dll | +| 176 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.XPath.dll | +| 177 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/System.Xml.XPath.XDocument.dll | +| 178 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/ref/net10.0/WindowsBase.dll | | 179 | /features:"InterceptorsNamespaces=;Microsoft.Extensions.Validation.Generated" | | 180 | /debug+ | | 181 | /debug:portable | @@ -191,15 +191,15 @@ | 190 | /deterministic+ | | 191 | /langversion:14.0 | | 192 | /analyzerconfig:obj/Debug/net10.0/test.GeneratedMSBuildEditorConfig.editorconfig | -| 193 | /analyzerconfig:/usr/share/dotnet/sdk/10.0.100/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_10_default.globalconfig | -| 194 | /analyzer:/usr/share/dotnet/sdk/10.0.100/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll | -| 195 | /analyzer:/usr/share/dotnet/sdk/10.0.100/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.NetAnalyzers.dll | -| 196 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll | -| 197 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll | -| 198 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll | -| 199 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll | -| 200 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll | -| 201 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.0/analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll | +| 193 | /analyzerconfig:/usr/share/dotnet/sdk/10.0.201/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_10_default.globalconfig | +| 194 | /analyzer:/usr/share/dotnet/sdk/10.0.201/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll | +| 195 | /analyzer:/usr/share/dotnet/sdk/10.0.201/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.NetAnalyzers.dll | +| 196 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll | +| 197 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll | +| 198 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll | +| 199 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll | +| 200 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll | +| 201 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/10.0.5/analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll | | 202 | Program.cs | | 203 | obj/Debug/net10.0/test.GlobalUsings.g.cs | | 204 | obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.cs | diff --git a/csharp/ql/integration-tests/linux/compiler_args/global.json b/csharp/ql/integration-tests/linux/compiler_args/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/linux/compiler_args/global.json +++ b/csharp/ql/integration-tests/linux/compiler_args/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/linux/diag_nuget_config_casing/global.json b/csharp/ql/integration-tests/linux/diag_nuget_config_casing/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/linux/diag_nuget_config_casing/global.json +++ b/csharp/ql/integration-tests/linux/diag_nuget_config_casing/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/global.json b/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/global.json +++ b/csharp/ql/integration-tests/linux/standalone_dependencies_non_utf8_filename/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/dotnet_test/global.json b/csharp/ql/integration-tests/posix/dotnet_test/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/dotnet_test/global.json +++ b/csharp/ql/integration-tests/posix/dotnet_test/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/dotnet_test_mstest/global.json b/csharp/ql/integration-tests/posix/dotnet_test_mstest/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/dotnet_test_mstest/global.json +++ b/csharp/ql/integration-tests/posix/dotnet_test_mstest/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/inherit-env-vars/global.json b/csharp/ql/integration-tests/posix/inherit-env-vars/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/inherit-env-vars/global.json +++ b/csharp/ql/integration-tests/posix/inherit-env-vars/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } 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 fdc5e6eae9d1..c6361fe69c52 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 @@ -65,7 +65,6 @@ ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql -ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.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 6694cc8461b8..893eaeb75607 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 @@ -38,7 +38,6 @@ ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql -ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql ql/csharp/ql/src/Likely Bugs/EqualsArray.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected index b520a571fc8c..43c14b4281ca 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected @@ -69,7 +69,6 @@ ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql -ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected index 619475882b51..8a3fdeb74b6e 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected @@ -1,170 +1,170 @@ | test-db/working/packages/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll:0:0:0:0 | Avalara.AvaTax.RestClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be94eb8ba37fd33c | | test-db/working/packages/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll:0:0:0:0 | Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | | test-db/working/packages/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected index 619475882b51..8a3fdeb74b6e 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected @@ -1,170 +1,170 @@ | test-db/working/packages/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll:0:0:0:0 | Avalara.AvaTax.RestClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be94eb8ba37fd33c | | test-db/working/packages/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll:0:0:0:0 | Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | | test-db/working/packages/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected index 7e3b8f6e4531..c3861c7a846c 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected @@ -1,167 +1,167 @@ -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/proj/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/global.json +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/posix/warn_as_error/global.json b/csharp/ql/integration-tests/posix/warn_as_error/global.json index 481e95ec7be1..ed6049740701 100644 --- a/csharp/ql/integration-tests/posix/warn_as_error/global.json +++ b/csharp/ql/integration-tests/posix/warn_as_error/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected index 90a2806afe5f..c4532a2d5544 100644 --- a/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected +++ b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected @@ -1,217 +1,217 @@ | test-db/working/packages/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll:0:0:0:0 | Avalara.AvaTax.RestClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be94eb8ba37fd33c | | test-db/working/packages/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll:0:0:0:0 | Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.netcore.app.ref/10.0.0/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Design.dll:0:0:0:0 | System.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Formats.Nrbf.dll:0:0:0:0 | System.Formats.Nrbf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Private.Windows.Core.dll:0:0:0:0 | System.Private.Windows.Core, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Private.Windows.GdiPlus.dll:0:0:0:0 | System.Private.Windows.GdiPlus, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Windows.Primitives.dll:0:0:0:0 | System.Windows.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | -| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.0/ref/net10.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Console.dll:0:0:0:0 | System.Console, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipelines.dll:0:0:0:0 | System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.IO.dll:0:0:0:0 | System.IO, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.AsyncEnumerable.dll:0:0:0:0 | System.Linq.AsyncEnumerable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServerSentEvents.dll:0:0:0:0 | System.Net.ServerSentEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/10.0.5/ref/net10.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Design.dll:0:0:0:0 | System.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Formats.Nrbf.dll:0:0:0:0 | System.Formats.Nrbf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Private.Windows.Core.dll:0:0:0:0 | System.Private.Windows.Core, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Private.Windows.GdiPlus.dll:0:0:0:0 | System.Private.Windows.GdiPlus, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Windows.Primitives.dll:0:0:0:0 | System.Windows.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/10.0.5/ref/net10.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | | test-db/working/packages/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/windows/standalone_dependencies/global.json b/csharp/ql/integration-tests/windows/standalone_dependencies/global.json index 376af49c07fa..ce67766bbb54 100644 --- a/csharp/ql/integration-tests/windows/standalone_dependencies/global.json +++ b/csharp/ql/integration-tests/windows/standalone_dependencies/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100" + "version": "10.0.201" } } diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 695a5611d94f..57d99a41480b 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 5.4.12 + +### Minor Analysis Improvements + +* The extractor no longer synthesizes expanded forms of compound assignments. This may have a small impact on the results of queries that explicitly or implicitly rely on the expanded form of compound assignments. +* The `cs/log-forging` query no longer treats arguments to extension methods with + source code on `ILogger` types as sinks. Instead, taint is tracked interprocedurally + through extension method bodies, reducing false positives when extension methods + sanitize input internally. + +## 5.4.11 + +No user-facing changes. + +## 5.4.10 + +No user-facing changes. + ## 5.4.9 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/Linq/Helpers.qll b/csharp/ql/lib/Linq/Helpers.qll index d490868f4532..2a4d5c8c27a2 100644 --- a/csharp/ql/lib/Linq/Helpers.qll +++ b/csharp/ql/lib/Linq/Helpers.qll @@ -77,7 +77,7 @@ predicate missedAllOpportunity(ForeachStmtGenericEnumerable fes) { // 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.getRValue() and + bl = a.getRightOperand() and bl.toString() = "false" ) and is.getThen().getAChild*() instanceof BreakStmt @@ -121,15 +121,17 @@ predicate missedOfTypeOpportunity(ForeachStmtEnumerable fes, LocalVariableDeclSt /** * Holds if `foreach` statement `fes` can be converted to a `.Select()` call. * That is, the loop variable is accessed only in the first statement of the - * block, the access is not a cast, and the first statement is a - * local variable declaration statement `s`. + * block, the access is not a cast, the first statement is a + * 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 + not s.getAVariableDeclExpr().getInitializer() instanceof Cast and + not s.getAVariableDeclExpr().getInitializer().getAChildExpr*() instanceof AwaitExpr } /** diff --git a/csharp/ql/lib/change-notes/2026-04-01-getlrvalue.md b/csharp/ql/lib/change-notes/2026-04-01-getlrvalue.md new file mode 100644 index 000000000000..da1a3d621481 --- /dev/null +++ b/csharp/ql/lib/change-notes/2026-04-01-getlrvalue.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The predicates `get[L|R]Value` in the class `Assignment` have been deprecated. Use `get[Left|Right]Operand` instead. diff --git a/csharp/ql/lib/change-notes/released/5.4.10.md b/csharp/ql/lib/change-notes/released/5.4.10.md new file mode 100644 index 000000000000..d92a42cf3a52 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.10.md @@ -0,0 +1,3 @@ +## 5.4.10 + +No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/5.4.11.md b/csharp/ql/lib/change-notes/released/5.4.11.md new file mode 100644 index 000000000000..2c791d4ad347 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.11.md @@ -0,0 +1,3 @@ +## 5.4.11 + +No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/5.4.12.md b/csharp/ql/lib/change-notes/released/5.4.12.md new file mode 100644 index 000000000000..506fae5a15e1 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.12.md @@ -0,0 +1,9 @@ +## 5.4.12 + +### Minor Analysis Improvements + +* The extractor no longer synthesizes expanded forms of compound assignments. This may have a small impact on the results of queries that explicitly or implicitly rely on the expanded form of compound assignments. +* The `cs/log-forging` query no longer treats arguments to extension methods with + source code on `ILogger` types as sinks. Instead, taint is tracked interprocedurally + through extension method bodies, reducing false positives when extension methods + sanitize input internally. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index b33412cd9393..43db6e52c988 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.4.9 +lastReleaseVersion: 5.4.12 diff --git a/csharp/ql/lib/definitions.qll b/csharp/ql/lib/definitions.qll index 4feaf20629c9..d4f2540bbef5 100644 --- a/csharp/ql/lib/definitions.qll +++ b/csharp/ql/lib/definitions.qll @@ -96,7 +96,7 @@ private class MethodUse extends Use, QualifiableExpr { private class AccessUse extends Access, Use { AccessUse() { not this.getTarget().(Parameter).getCallable() instanceof Accessor and - not this = any(LocalVariableDeclAndInitExpr d).getLValue() and + not this = any(LocalVariableDeclAndInitExpr d).getLeftOperand() and not this.isImplicit() and not this instanceof MethodAccess and // handled by `MethodUse` not this instanceof TypeAccess and // handled by `TypeMentionUse` diff --git a/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll b/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll index 49dd011658d4..b09251cf6e42 100644 --- a/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll +++ b/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll @@ -48,7 +48,7 @@ private predicate maybeUsedInElfHashFunction(Variable v, Operation xor, Operatio Expr e1, Expr e2, AssignExpr addAssign, AssignExpr xorAssign, Operation notOp, AssignExpr notAssign | - (add instanceof AddExpr or add instanceof AssignAddExpr) and + add instanceof AddOperation and e1.getAChild*() = add.getAnOperand() and e1 instanceof BinaryBitwiseOperation and e2 = e1.(BinaryBitwiseOperation).getLeftOperand() and diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 3c914c680194..02c1ccd0d33c 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.4.9 +version: 5.4.13-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/csharp/Assignable.qll b/csharp/ql/lib/semmle/code/csharp/Assignable.qll index 3c7170a6f846..7075626aa3bd 100644 --- a/csharp/ql/lib/semmle/code/csharp/Assignable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Assignable.qll @@ -78,6 +78,8 @@ class AssignableRead extends AssignableAccess { this.isRefArgument() or this = any(AssignableDefinitions::AddressOfDefinition def).getTargetAccess() + or + this = any(AssignableDefinitions::AssignOperationDefinition def).getTargetAccess() ) and not nameOfChild(_, this) } @@ -233,7 +235,7 @@ private class RefArg extends AssignableAccess { module AssignableInternal { private predicate tupleAssignmentDefinition(AssignExpr ae, Expr leaf) { exists(TupleExpr te | - ae.getLValue() = te and + ae.getLeftOperand() = te and te.getAnArgument+() = leaf and // `leaf` is either an assignable access or a local variable declaration not leaf instanceof TupleExpr @@ -247,8 +249,8 @@ module AssignableInternal { */ private predicate tupleAssignmentPair(AssignExpr ae, Expr left, Expr right) { tupleAssignmentDefinition(ae, _) and - left = ae.getLValue() and - right = ae.getRValue() + left = ae.getLeftOperand() and + right = ae.getRightOperand() or exists(TupleExpr l, TupleExpr r, int i | tupleAssignmentPair(ae, l, r) | left = l.getArgument(i) and @@ -271,6 +273,8 @@ module AssignableInternal { def = TAddressOfDefinition(result) or def = TPatternDefinition(result) + or + def = TAssignOperationDefinition(result) } /** A local variable declaration at the top-level of a pattern. */ @@ -286,7 +290,11 @@ module AssignableInternal { private module Cached { cached newtype TAssignableDefinition = - TAssignmentDefinition(Assignment a) { not a.getLValue() instanceof TupleExpr } or + TAssignmentDefinition(Assignment a) { + not a.getLeftOperand() instanceof TupleExpr and + not a instanceof AssignCallOperation and + not a instanceof AssignCoalesceExpr + } or TTupleAssignmentDefinition(AssignExpr ae, Expr leaf) { tupleAssignmentDefinition(ae, leaf) } or TOutRefDefinition(AssignableAccess aa) { aa.isOutArgument() @@ -309,7 +317,11 @@ module AssignableInternal { ) } or TAddressOfDefinition(AddressOfExpr aoe) or - TPatternDefinition(TopLevelPatternDecl tlpd) + TPatternDefinition(TopLevelPatternDecl tlpd) or + TAssignOperationDefinition(AssignOperation ao) { + ao instanceof AssignCallOperation or + ao instanceof AssignCoalesceExpr + } /** * Gets the source expression assigned in tuple definition `def`, if any. @@ -346,7 +358,7 @@ module AssignableInternal { // Not defined by dispatch in order to avoid too conservative negative recursion error cached AssignableAccess getTargetAccess(AssignableDefinition def) { - def = TAssignmentDefinition(any(Assignment a | a.getLValue() = result)) + def = TAssignmentDefinition(any(Assignment a | a.getLeftOperand() = result)) or def = TTupleAssignmentDefinition(_, result) or @@ -355,6 +367,8 @@ module AssignableInternal { def = TMutationDefinition(any(MutatorOperation mo | mo.getOperand() = result)) or def = TAddressOfDefinition(any(AddressOfExpr aoe | aoe.getOperand() = result)) + or + def = TAssignOperationDefinition(any(AssignOperation ao | ao.getLeftOperand() = result)) } /** @@ -367,10 +381,12 @@ module AssignableInternal { tupleAssignmentPair(ae, ac, result) ) or - exists(Assignment ass | ac = ass.getLValue() | - result = ass.getRValue() and - not ass.(AssignOperation).hasExpandedAssignment() + exists(Assignment ass | ac = ass.getLeftOperand() | + result = ass.getRightOperand() and + not ass instanceof AssignOperation ) + or + exists(AssignOperation ao | ac = ao.getLeftOperand() | result = ao) } } @@ -388,8 +404,9 @@ private import AssignableInternal * a mutation update (`AssignableDefinitions::MutationDefinition`), a local variable * declaration without an initializer (`AssignableDefinitions::LocalVariableDefinition`), * an implicit parameter definition (`AssignableDefinitions::ImplicitParameterDefinition`), - * an address-of definition (`AssignableDefinitions::AddressOfDefinition`), or a pattern - * definition (`AssignableDefinitions::PatternDefinition`). + * an address-of definition (`AssignableDefinitions::AddressOfDefinition`), a pattern + * definition (`AssignableDefinitions::PatternDefinition`), or a compound assignment + * operation definition (`AssignableDefinitions::AssignOperationDefinition`) */ class AssignableDefinition extends TAssignableDefinition { /** @@ -510,8 +527,8 @@ module AssignableDefinitions { Assignment getAssignment() { result = a } override Expr getSource() { - result = a.getRValue() and - not a instanceof AssignOperation + result = a.getRightOperand() and + not a instanceof AddOrRemoveEventExpr } override string toString() { result = a.toString() } @@ -735,4 +752,17 @@ module AssignableDefinitions { /** Gets the assignable (field or property) being initialized. */ Assignable getAssignable() { result = fieldOrProp } } + + /** + * A definition by a compound assignment operation, for example `x += y`. + */ + class AssignOperationDefinition extends AssignableDefinition, TAssignOperationDefinition { + AssignOperation ao; + + AssignOperationDefinition() { this = TAssignOperationDefinition(ao) } + + override Expr getSource() { result = ao } + + override string toString() { result = ao.toString() } + } } diff --git a/csharp/ql/lib/semmle/code/csharp/Callable.qll b/csharp/ql/lib/semmle/code/csharp/Callable.qll index f8346cfe01e2..611b578b859a 100644 --- a/csharp/ql/lib/semmle/code/csharp/Callable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Callable.qll @@ -336,6 +336,22 @@ class ExtensionTypeExtensionMethod extends ExtensionMethodImpl { ExtensionTypeExtensionMethod() { this.isInExtension() } } +/** + * A non-static member with an initializer, for example a field `int Field = 0`. + */ +private class InitializedInstanceMember extends Member { + private AssignExpr ae; + + InitializedInstanceMember() { + not this.isStatic() and + expr_parent_top_level(ae, _, this) and + not ae = getExpressionBody(_) + } + + /** Gets the initializer expression. */ + AssignExpr getInitializer() { result = ae } +} + /** * An object initializer method. * @@ -347,6 +363,17 @@ class ExtensionTypeExtensionMethod extends ExtensionMethodImpl { */ class ObjectInitMethod extends Method { ObjectInitMethod() { this.getName() = "" } + + /** + * Holds if this object initializer method performs the initialization + * of a member via assignment `init`. + */ + predicate initializes(AssignExpr init) { + exists(InitializedInstanceMember m | + this.getDeclaringType().getAMember() = m and + init = m.getInitializer() + ) + } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/Conversion.qll b/csharp/ql/lib/semmle/code/csharp/Conversion.qll index ec7ef9cac952..e151944dc381 100644 --- a/csharp/ql/lib/semmle/code/csharp/Conversion.qll +++ b/csharp/ql/lib/semmle/code/csharp/Conversion.qll @@ -232,14 +232,9 @@ private module Identity { */ pragma[nomagic] private predicate convTypeArguments(Type fromTypeArgument, Type toTypeArgument, int i) { - exists(int j | - fromTypeArgument = getTypeArgumentRanked(_, _, i) and - toTypeArgument = getTypeArgumentRanked(_, _, j) and - i <= j and - j <= i - | - convIdentity(fromTypeArgument, toTypeArgument) - ) + fromTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i)) and + toTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i)) and + convIdentity(fromTypeArgument, toTypeArgument) } pragma[nomagic] @@ -718,7 +713,7 @@ private class SignedIntegralConstantExpr extends Expr { } private predicate convConstantIntExpr(SignedIntegralConstantExpr e, SimpleType toType) { - exists(int n | n = e.getValue().toInt() | + exists(int n | n = e.getIntValue() | toType = any(SByteType t | n in [t.minValue() .. t.maxValue()]) or toType = any(ByteType t | n in [t.minValue() .. t.maxValue()]) @@ -735,7 +730,7 @@ private predicate convConstantIntExpr(SignedIntegralConstantExpr e, SimpleType t private predicate convConstantLongExpr(SignedIntegralConstantExpr e) { e.getType() instanceof LongType and - e.getValue().toInt() >= 0 + e.getIntValue() >= 0 } /** 6.1.10: Implicit reference conversions involving type parameters. */ @@ -929,19 +924,16 @@ private module Variance { private predicate convTypeArguments( TypeArgument fromTypeArgument, TypeArgument toTypeArgument, int i, TVariance v ) { - exists(int j | - fromTypeArgument = getTypeArgumentRanked(_, _, i, _) and - toTypeArgument = getTypeArgumentRanked(_, _, j, _) and - i <= j and - j <= i - | + fromTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i), _) and + toTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i), _) and + ( convIdentity(fromTypeArgument, toTypeArgument) and v = TNone() or - convRefTypeTypeArgumentOut(fromTypeArgument, toTypeArgument, j) and + convRefTypeTypeArgumentOut(fromTypeArgument, toTypeArgument, i) and v = TOut() or - convRefTypeTypeArgumentIn(toTypeArgument, fromTypeArgument, j) and + convRefTypeTypeArgumentIn(toTypeArgument, fromTypeArgument, i) and v = TIn() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll b/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll index aa834ef91038..8102b4a02880 100644 --- a/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll +++ b/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll @@ -20,7 +20,7 @@ class ExprOrStmtParent extends Element, @exprorstmt_parent { /** Gets the `i`th child expression of this element (zero-based). */ final Expr getChildExpr(int i) { - expr_parent_adjusted(result, i, this) or + expr_parent(result, i, this) or expr_parent_top_level_adjusted(result, i, this) } @@ -118,67 +118,9 @@ private module Cached { i = 0 } - /** - * The `expr_parent()` relation adjusted for expandable assignments. For example, - * the assignment `x += y` is extracted as - * - * ``` - * += - * | - * 2 - * | - * = - * / \ - * 1 0 - * / \ - * x + - * / \ - * 1 0 - * / \ - * x y - * ``` - * - * in order to be able to retrieve the expanded assignment `x = x + y` as the 2nd - * child. This predicate changes the diagram above into - * - * ``` - * += - * / \ - * 1 0 - * / \ - * x y - * ``` - */ - cached - predicate expr_parent_adjusted(Expr child, int i, ControlFlowElement parent) { - if parent instanceof AssignOperation - then - parent = - any(AssignOperation ao | - exists(AssignExpr ae | ae = ao.getExpandedAssignment() | - i = 0 and - exists(Expr right | - // right = `x + y` - expr_parent(right, 0, ae) - | - expr_parent(child, 1, right) - ) - or - i = 1 and - expr_parent(child, 1, ae) - ) - or - not ao.hasExpandedAssignment() and - expr_parent(child, i, parent) - ) - else expr_parent(child, i, parent) - } - private Expr getAChildExpr(ExprOrStmtParent parent) { result = parent.getAChildExpr() and not result = parent.(DeclarationWithGetSetAccessors).getExpressionBody() - or - result = parent.(AssignOperation).getExpandedAssignment() } private ControlFlowElement getAChild(ExprOrStmtParent parent) { @@ -214,6 +156,8 @@ private module Cached { parent*(enclosingStart(cfe), c.(Constructor).getInitializer()) or parent*(cfe, c.(Constructor).getObjectInitializerCall()) + or + parent*(cfe, any(AssignExpr init | c.(ObjectInitMethod).initializes(init))) } /** Holds if the enclosing statement of expression `e` is `s`. */ diff --git a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll index 1ac96c85e788..1fab6b0f8c45 100644 --- a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll +++ b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll @@ -343,10 +343,10 @@ final class AssignmentNode extends ControlFlowElementNode { result.(TypeMentionNode).getTarget() = controlFlowElement or childIndex = 0 and - result.(ElementNode).getElement() = assignment.getLValue() + result.(ElementNode).getElement() = assignment.getLeftOperand() or childIndex = 1 and - result.(ElementNode).getElement() = assignment.getRValue() + result.(ElementNode).getElement() = assignment.getRightOperand() } } diff --git a/csharp/ql/lib/semmle/code/csharp/Property.qll b/csharp/ql/lib/semmle/code/csharp/Property.qll index 88665280d5b9..c9a338d0359f 100644 --- a/csharp/ql/lib/semmle/code/csharp/Property.qll +++ b/csharp/ql/lib/semmle/code/csharp/Property.qll @@ -226,7 +226,7 @@ class Property extends DeclarationWithGetSetAccessors, @property { * } * ``` */ - Expr getInitializer() { result = this.getChildExpr(1).getChildExpr(0) } + Expr getInitializer() { result = this.getChildExpr(1).getChildExpr(1) } /** * Holds if this property has an initial value. For example, the initial @@ -535,8 +535,8 @@ class Setter extends Accessor, @setter { exists(AssignExpr assign | this.getStatementBody().getNumberOfStmts() = 1 and assign.getParent() = this.getStatementBody().getAChild() and - assign.getLValue() = result.getAnAccess() and - assign.getRValue() = accessToValue() + assign.getLeftOperand() = result.getAnAccess() and + assign.getRightOperand() = accessToValue() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/Variable.qll b/csharp/ql/lib/semmle/code/csharp/Variable.qll index 746ea6acd2f6..6d59816373d2 100644 --- a/csharp/ql/lib/semmle/code/csharp/Variable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Variable.qll @@ -408,7 +408,7 @@ class Field extends Variable, AssignableMember, Attributable, TopLevelExprParent * } * ``` */ - final override Expr getInitializer() { result = this.getChildExpr(0).getChildExpr(0) } + final override Expr getInitializer() { result = this.getChildExpr(0).getChildExpr(1) } /** * Holds if this field has an initial value. For example, the initial diff --git a/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll b/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll index b4641560892b..776e2e97c370 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll @@ -161,7 +161,7 @@ private newtype TComparisonTest = compare.getComparisonKind().isCompare() and outerKind = outer.getComparisonKind() and outer.getAnArgument() = compare.getExpr() and - i = outer.getAnArgument().getValue().toInt() + i = outer.getAnArgument().getIntValue() | outerKind.isEquality() and ( diff --git a/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll b/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll index ab2d9e0eef74..a5f1bc43abee 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll @@ -4,19 +4,6 @@ import csharp private import semmle.code.csharp.commons.ComparisonTest private import semmle.code.csharp.commons.StructuralComparison as StructuralComparison -pragma[noinline] -private predicate isConstantCondition0(ControlFlow::Node cfn, boolean b) { - exists(cfn.getASuccessorByType(any(ControlFlow::BooleanSuccessor t | t.getValue() = b))) and - strictcount(ControlFlow::SuccessorType t | exists(cfn.getASuccessorByType(t))) = 1 -} - -/** - * Holds if `e` is a condition that always evaluates to Boolean value `b`. - */ -predicate isConstantCondition(Expr e, boolean b) { - forex(ControlFlow::Node cfn | cfn = e.getAControlFlowNode() | isConstantCondition0(cfn, b)) -} - /** * Holds if comparison operation `co` is constant with the Boolean value `b`. * For example, the comparison `x > x` is constantly `false` in @@ -45,13 +32,13 @@ private module ConstantComparisonOperation { private int maxValue(Expr expr) { if convertedType(expr) instanceof IntegralType and exists(expr.getValue()) - then result = expr.getValue().toInt() + then result = expr.getIntValue() else result = convertedType(expr).maxValue() } private int minValue(Expr expr) { if convertedType(expr) instanceof IntegralType and exists(expr.getValue()) - then result = expr.getValue().toInt() + then result = expr.getIntValue() else result = convertedType(expr).minValue() } diff --git a/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll b/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll index bdf9e5585394..3fde913358b3 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll @@ -29,7 +29,7 @@ class ImplicitToStringExpr extends Expr { m = p.getCallable() | m = any(SystemTextStringBuilderClass c).getAMethod() and - m.getName().regexpMatch("Append(Line)?") and + m.getName() = "Append" and not p.getType() instanceof ArrayType or p instanceof StringFormatItemParameter and @@ -49,6 +49,11 @@ class ImplicitToStringExpr extends Expr { this = add.getOtherOperand(o).stripImplicit() ) or + exists(AssignAddExpr add, Expr o | o = add.getLeftOperand() | + o.stripImplicit().getType() instanceof StringType and + this = add.getRightOperand().stripImplicit() + ) + or this = any(InterpolatedStringExpr ise).getAnInsert().stripImplicit() } } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 40ec3722edd2..66b591cfcd25 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -60,25 +60,16 @@ private module GuardsInput implements override boolean asBooleanValue() { boolConst(this, result) } } - private predicate intConst(Expr e, int i) { - e.getValue().toInt() = i and - ( - e.getType() instanceof Enum - or - e.getType() instanceof IntegralType - ) - } - private class IntegerConstant extends ConstantExpr { - IntegerConstant() { intConst(this, _) } + IntegerConstant() { exists(this.getIntValue()) } - override int asIntegerValue() { intConst(this, result) } + override int asIntegerValue() { result = this.getIntValue() } } private class EnumConst extends ConstantExpr { EnumConst() { this.getType() instanceof Enum and this.hasValue() } - override int asIntegerValue() { result = this.getValue().toInt() } + override int asIntegerValue() { result = this.getIntValue() } } private class StringConstant extends ConstantExpr instanceof StringLiteral { @@ -119,14 +110,14 @@ private module GuardsInput implements class AndExpr extends BinExpr { AndExpr() { this instanceof LogicalAndExpr or - this instanceof BitwiseAndExpr + this instanceof BitwiseAndOperation } } class OrExpr extends BinExpr { OrExpr() { this instanceof LogicalOrExpr or - this instanceof BitwiseOrExpr + this instanceof BitwiseOrOperation } } @@ -136,7 +127,7 @@ private module GuardsInput implements IdExpr() { this instanceof AssignExpr or this instanceof CastExpr } Expr getEqualChildExpr() { - result = this.(AssignExpr).getRValue() + result = this.(AssignExpr).getRightOperand() or result = this.(CastExpr).getExpr() } @@ -292,7 +283,7 @@ private module LogicInput implements GuardsImpl::LogicInputSig { v1.isNonNullValue() and v2 = v1 or - g2 = g1.(NullCoalescingExpr).getAnOperand() and + g2 = g1.(NullCoalescingOperation).getAnOperand() and v1.isNullValue() and v2 = v1 or @@ -517,35 +508,35 @@ class EnumerableCollectionExpr extends Expr { | // x.Length == 0 ct.getComparisonKind().isEquality() and - ct.getAnArgument().getValue().toInt() = 0 and + ct.getAnArgument().getIntValue() = 0 and branch = isEmpty or // x.Length == k, k > 0 ct.getComparisonKind().isEquality() and - ct.getAnArgument().getValue().toInt() > 0 and + ct.getAnArgument().getIntValue() > 0 and branch = true and isEmpty = false or // x.Length != 0 ct.getComparisonKind().isInequality() and - ct.getAnArgument().getValue().toInt() = 0 and + ct.getAnArgument().getIntValue() = 0 and branch = isEmpty.booleanNot() or // x.Length != k, k != 0 ct.getComparisonKind().isInequality() and - ct.getAnArgument().getValue().toInt() != 0 and + ct.getAnArgument().getIntValue() != 0 and branch = false and isEmpty = false or // x.Length > k, k >= 0 ct.getComparisonKind().isLessThan() and - ct.getFirstArgument().getValue().toInt() >= 0 and + ct.getFirstArgument().getIntValue() >= 0 and branch = true and isEmpty = false or // x.Length >= k, k > 0 ct.getComparisonKind().isLessThanEquals() and - ct.getFirstArgument().getValue().toInt() > 0 and + ct.getFirstArgument().getIntValue() > 0 and branch = true and isEmpty = false ) @@ -836,18 +827,18 @@ module Internal { /** Holds if expression `e2` is a `null` value whenever `e1` is. */ predicate nullValueImpliedUnary(Expr e1, Expr e2) { - e1 = e2.(AssignExpr).getRValue() + e1 = e2.(AssignExpr).getRightOperand() or e1 = e2.(Cast).getExpr() or - e2 = e1.(NullCoalescingExpr).getAnOperand() + e2 = e1.(NullCoalescingOperation).getAnOperand() } /** Holds if expression `e3` is a `null` value whenever `e1` and `e2` are. */ predicate nullValueImpliedBinary(Expr e1, Expr e2, Expr e3) { e3 = any(ConditionalExpr ce | e1 = ce.getThen() and e2 = ce.getElse()) or - e3 = any(NullCoalescingExpr nce | e1 = nce.getLeftOperand() and e2 = nce.getRightOperand()) + e3 = any(NullCoalescingOperation no | e1 = no.getLeftOperand() and e2 = no.getRightOperand()) } predicate nullValueImplied(Expr e) { @@ -907,7 +898,7 @@ module Internal { or // "In string concatenation operations, the C# compiler treats a null string the same as an empty string." // (https://docs.microsoft.com/en-us/dotnet/csharp/how-to/concatenate-multiple-strings) - e instanceof AddExpr and + e instanceof AddOperation and e.getType() instanceof StringType or e.(DefaultValueExpr).getType().isValueType() @@ -922,11 +913,9 @@ module Internal { /** Holds if expression `e2` is a non-`null` value whenever `e1` is. */ predicate nonNullValueImpliedUnary(Expr e1, Expr e2) { - e1 = e2.(CastExpr).getExpr() - or - e1 = e2.(AssignExpr).getRValue() - or - e1 = e2.(NullCoalescingExpr).getAnOperand() + e1 = e2.(CastExpr).getExpr() or + e1 = e2.(AssignExpr).getRightOperand() or + e1 = e2.(NullCoalescingOperation).getAnOperand() } /** @@ -953,10 +942,13 @@ module Internal { ) or // In C#, `null + 1` has type `int?` with value `null` - exists(BinaryArithmeticOperation bao, Expr o | - result = bao and - bao.getAnOperand() = e and - bao.getAnOperand() = o and + exists(BinaryOperation bo, Expr o | + bo instanceof BinaryArithmeticOperation or + bo instanceof AssignArithmeticOperation + | + result = bo and + bo.getAnOperand() = e and + bo.getAnOperand() = o and // The other operand must be provably non-null in order // for `only if` to hold nonNullValueImplied(o) and @@ -972,10 +964,10 @@ module Internal { any(QualifiableExpr qe | qe.isConditional() and result = qe.getQualifier() - ) - or + ) or // In C#, `null + 1` has type `int?` with value `null` - e = any(BinaryArithmeticOperation bao | result = bao.getAnOperand()) + e = any(BinaryArithmeticOperation bao | result = bao.getAnOperand()) or + e = any(AssignArithmeticOperation aao | result = aao.getAnOperand()) } deprecated predicate isGuard(Expr e, GuardValue val) { diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll index ab8bb233e2cc..e734e79402bf 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll @@ -344,7 +344,7 @@ private class TriedControlFlowElement extends ControlFlowElement { result instanceof SystemOutOfMemoryExceptionClass or this = - any(AddExpr ae | + any(AddOperation ae | ae.getType() instanceof StringType and result instanceof SystemOutOfMemoryExceptionClass or @@ -353,24 +353,24 @@ private class TriedControlFlowElement extends ControlFlowElement { ) or this = - any(SubExpr se | + any(SubOperation se | se.getType() instanceof IntegralType and result instanceof SystemOverflowExceptionClass ) or this = - any(MulExpr me | + any(MulOperation me | me.getType() instanceof IntegralType and result instanceof SystemOverflowExceptionClass ) or this = - any(DivExpr de | + any(DivOperation de | not de.getDenominator().getValue().toFloat() != 0 and result instanceof SystemDivideByZeroExceptionClass ) or - this instanceof RemExpr and + this instanceof RemOperation and result instanceof SystemDivideByZeroExceptionClass or this instanceof DynamicExpr and @@ -447,7 +447,7 @@ private predicate inBooleanContext(Expr e) { e in [ce.getThen(), ce.getElse()] ) or - e = any(NullCoalescingExpr nce | inBooleanContext(nce)).getAnOperand() + e = any(NullCoalescingOperation nce | inBooleanContext(nce)).getAnOperand() or e = any(SwitchExpr se | inBooleanContext(se)).getACase() or @@ -467,13 +467,13 @@ private predicate mustHaveNullnessCompletion(Expr e) { * that `e` evaluates to determines a `null`/non-`null` branch successor. */ private predicate inNullnessContext(Expr e) { - e = any(NullCoalescingExpr nce).getLeftOperand() + e = any(NullCoalescingOperation nce).getLeftOperand() or exists(QualifiableExpr qe | qe.isConditional() | e = qe.getChildExpr(-1)) or exists(ConditionalExpr ce | inNullnessContext(ce) | (e = ce.getThen() or e = ce.getElse())) or - exists(NullCoalescingExpr nce | inNullnessContext(nce) | e = nce.getRightOperand()) + exists(NullCoalescingOperation nce | inNullnessContext(nce) | e = nce.getRightOperand()) or e = any(SwitchExpr se | inNullnessContext(se)).getACase() or diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll index 1696869e5911..dc2c7477a35a 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll @@ -10,42 +10,15 @@ private import semmle.code.csharp.ExprOrStmtParent private import semmle.code.csharp.commons.Compilation private module Initializers { - /** - * A non-static member with an initializer, for example a field `int Field = 0`. - */ - class InitializedInstanceMember extends Member { - private AssignExpr ae; - - InitializedInstanceMember() { - not this.isStatic() and - expr_parent_top_level(ae, _, this) and - not ae = any(Callable c).getExpressionBody() - } - - /** Gets the initializer expression. */ - AssignExpr getInitializer() { result = ae } - } - - /** - * Holds if `obinit` is an object initializer method that performs the initialization - * of a member via assignment `init`. - */ - predicate obinitInitializes(ObjectInitMethod obinit, AssignExpr init) { - exists(InitializedInstanceMember m | - obinit.getDeclaringType().getAMember() = m and - init = m.getInitializer() - ) - } - /** * Gets the `i`th member initializer expression for object initializer method `obinit` * in compilation `comp`. */ AssignExpr initializedInstanceMemberOrder(ObjectInitMethod obinit, CompilationExt comp, int i) { - obinitInitializes(obinit, result) and + obinit.initializes(result) and result = rank[i + 1](AssignExpr ae0, Location l | - obinitInitializes(obinit, ae0) and + obinit.initializes(ae0) and l = ae0.getLocation() and getCompilation(l.getFile()) = comp | @@ -74,7 +47,7 @@ class CfgScope extends Element, @top_level_exprorstmt_parent { any(Callable c | c.(Constructor).hasInitializer() or - Initializers::obinitInitializes(c, _) + c.(ObjectInitMethod).initializes(_) or c.hasBody() ) @@ -89,18 +62,13 @@ class CfgScope extends Element, @top_level_exprorstmt_parent { private class TAstNode = @callable or @control_flow_element; -private Element getAChild(Element p) { - result = p.getAChild() or - result = p.(AssignOperation).getExpandedAssignment() -} - pragma[nomagic] private predicate astNode(Element e) { e = any(@top_level_exprorstmt_parent p | not p instanceof Attribute) or exists(Element parent | astNode(parent) and - e = getAChild(parent) + e = parent.getAChild() ) } @@ -474,7 +442,6 @@ module Expressions { private AstNode getExprChild0(Expr e, int i) { not e instanceof NameOfExpr and not e instanceof QualifiableExpr and - not e instanceof Assignment and not e instanceof AnonymousFunctionExpr and result = e.getChild(i) or @@ -485,14 +452,6 @@ module Expressions { not qe instanceof ExtensionMethodCall and result = qe.getChild(i) ) - or - e = - any(Assignment a | - // The left-hand side of an assignment is evaluated before the right-hand side - i = 0 and result = a.getLValue() - or - i = 1 and result = a.getRValue() - ) } private AstNode getExprChild(Expr e, int i) { @@ -518,9 +477,8 @@ module Expressions { not this instanceof LogicalNotExpr and not this instanceof LogicalAndExpr and not this instanceof LogicalOrExpr and - not this instanceof NullCoalescingExpr and + not this instanceof NullCoalescingOperation and not this instanceof ConditionalExpr and - not this instanceof AssignOperationWithExpandedAssignment and not this instanceof ConditionallyQualifiedExpr and not this instanceof ThrowExpr and not this instanceof ObjectCreation and @@ -563,7 +521,7 @@ module Expressions { // ``` // need special treatment, because the accesses `[0]`, `[1]`, and `[2]` // have no qualifier. - this = any(MemberInitializer mi).getLValue() + this = any(MemberInitializer mi).getLeftOperand() ) and not exists(AssignableDefinitions::OutRefDefinition def | def.getTargetAccess() = this) } @@ -617,8 +575,7 @@ module Expressions { QualifiedAccessorWrite() { def.getExpr() = this and def.getTargetAccess().(WriteAccess) instanceof QualifiableExpr and - not def instanceof AssignableDefinitions::OutRefDefinition and - not this instanceof AssignOperationWithExpandedAssignment + not def instanceof AssignableDefinitions::OutRefDefinition } /** @@ -750,7 +707,8 @@ module Expressions { } } - private class NullCoalescingExprTree extends PostOrderTree instanceof NullCoalescingExpr { + private class NullCoalescingOperationTree extends PostOrderTree instanceof NullCoalescingOperation + { final override predicate propagatesAbnormal(AstNode child) { child in [super.getLeftOperand(), super.getRightOperand()] } @@ -801,26 +759,6 @@ module Expressions { } } - /** - * An assignment operation that has an expanded version. We use the expanded - * version in the control flow graph in order to get better data flow / taint - * tracking. - */ - private class AssignOperationWithExpandedAssignment extends ControlFlowTree instanceof AssignOperation - { - private Expr expanded; - - AssignOperationWithExpandedAssignment() { expanded = this.getExpandedAssignment() } - - final override predicate first(AstNode first) { first(expanded, first) } - - final override predicate last(AstNode last, Completion c) { last(expanded, last, c) } - - final override predicate propagatesAbnormal(AstNode child) { none() } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { none() } - } - /** A conditionally qualified expression. */ private class ConditionallyQualifiedExpr extends PostOrderTree instanceof QualifiableExpr { private Expr qualifier; @@ -1578,7 +1516,7 @@ module Statements { /** Gets a child of `cfe` that is in CFG scope `scope`. */ pragma[noinline] private ControlFlowElement getAChildInScope(AstNode cfe, Callable scope) { - result = getAChild(cfe) and + result = cfe.getAChild() and scope = result.getEnclosingCallable() } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll index 55b75ed31a71..173179216f3d 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll @@ -95,7 +95,7 @@ module ConditionalCompletionSplitting { child = parent.(SwitchCaseExpr).getBody() or parent = - any(NullCoalescingExpr nce | + any(NullCoalescingOperation nce | if childCompletion instanceof NullnessCompletion then child = nce.getRightOperand() else child = nce.getAnOperand() diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index c7ac34d3d01a..3d690ee1ac46 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -31,7 +31,7 @@ private Expr maybeNullExpr(Expr reason) { or result instanceof AsExpr and reason = result or - result.(AssignExpr).getRValue() = maybeNullExpr(reason) + result.(AssignExpr).getRightOperand() = maybeNullExpr(reason) or result.(CastExpr).getExpr() = maybeNullExpr(reason) or @@ -42,7 +42,7 @@ private Expr maybeNullExpr(Expr reason) { ce.getElse() = maybeNullExpr(reason) ) or - result.(NullCoalescingExpr).getRightOperand() = maybeNullExpr(reason) + result.(NullCoalescingOperation).getRightOperand() = maybeNullExpr(reason) or result = any(QualifiableExpr qe | diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll index af104d777b87..ab1e75b3d0fc 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll @@ -29,4 +29,8 @@ module CsharpDataFlow implements InputSig { predicate neverSkipInPathGraph(Node n) { exists(n.(AssignableDefinitionNode).getDefinition().getTargetAccess()) } + + DataFlowType getSourceContextParameterNodeType(Node p) { + exists(p) and result.isSourceContextParameterType() + } } 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 03164960d410..ae530b2d451a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -274,7 +274,7 @@ module VariableCapture { } private module CaptureInput implements Shared::InputSig { - private import csharp as Cs + private import csharp as CS private import semmle.code.csharp.controlflow.ControlFlowGraph as Cfg private import TaintTrackingPrivate as TaintTrackingPrivate @@ -391,7 +391,7 @@ module VariableCapture { } } - class Callable extends Cs::Callable { + class Callable extends CS::Callable { predicate isConstructor() { this instanceof Constructor } } } @@ -512,7 +512,7 @@ module LocalFlow { predicate localExprStep(Expr e1, Expr e2) { e1 = e2.(ParenthesizedExpr).getExpr() or - e1 = e2.(NullCoalescingExpr).getAnOperand() + e1 = e2.(NullCoalescingOperation).getAnOperand() or e1 = e2.(SuppressNullableWarningExpr).getExpr() or @@ -528,7 +528,7 @@ module LocalFlow { e2 = any(AssignExpr ae | ae.getParent() = any(ControlFlowElement cfe | not cfe instanceof ExprStmt) and - e1 = ae.getRValue() + e1 = ae.getRightOperand() ) or e1 = e2.(ObjectCreation).getInitializer() @@ -554,7 +554,7 @@ module LocalFlow { e2 = we ) or - exists(AssignExpr ae | ae.getLValue().(TupleExpr) = e2 and ae.getRValue() = e1) + exists(AssignExpr ae | ae.getLeftOperand().(TupleExpr) = e2 and ae.getRightOperand() = e1) or exists(ControlFlowElement cfe | cfe = e2.(TupleExpr).(PatternExpr).getPatternMatch() | cfe.(IsExpr).getExpr() = e1 @@ -623,7 +623,7 @@ module LocalFlow { ( e instanceof ConditionalExpr or e instanceof Cast or - e instanceof NullCoalescingExpr or + e instanceof NullCoalescingOperation or e instanceof SwitchExpr or e instanceof SuppressNullableWarningExpr or e instanceof AssignExpr @@ -795,7 +795,7 @@ private predicate fieldOrPropertyStore(ContentSet c, Expr src, Expr q, boolean p q = we and mi = we.getInitializer().getAMemberInitializer() and f = mi.getInitializedMember() and - src = mi.getRValue() and + src = mi.getRightOperand() and postUpdate = false ) or @@ -804,7 +804,7 @@ private predicate fieldOrPropertyStore(ContentSet c, Expr src, Expr q, boolean p mi = q.(ObjectInitializer).getAMemberInitializer() and q.getParent() instanceof ObjectCreation and f = mi.getInitializedMember() and - src = mi.getRValue() and + src = mi.getRightOperand() and postUpdate = false ) or @@ -879,8 +879,8 @@ private predicate arrayStore(Expr src, Expr a, boolean postUpdate) { // Member initializer, `new C { Array = { [i] = src } }` exists(MemberInitializer mi | mi = a.(ObjectInitializer).getAMemberInitializer() and - mi.getLValue() instanceof ArrayAccess and - mi.getRValue() = src and + mi.getLeftOperand() instanceof ArrayAccess and + mi.getRightOperand() = src and postUpdate = false ) } @@ -1179,7 +1179,8 @@ private module Cached { cached newtype TDataFlowType = TGvnDataFlowType(Gvn::GvnType t) or - TDelegateDataFlowType(Callable lambda) { lambdaCreationExpr(_, lambda) } + TDelegateDataFlowType(Callable lambda) { lambdaCreationExpr(_, lambda) } or + TSourceContextParameterType() } import Cached @@ -2394,6 +2395,8 @@ class DataFlowType extends TDataFlowType { Callable asDelegate() { this = TDelegateDataFlowType(result) } + predicate isSourceContextParameterType() { this = TSourceContextParameterType() } + /** * Gets an expression that creates a delegate of this type. * @@ -2412,6 +2415,9 @@ class DataFlowType extends TDataFlowType { result = this.asGvnType().toString() or result = this.asDelegate().toString() + or + this.isSourceContextParameterType() and + result = "" } } @@ -2469,6 +2475,11 @@ private predicate compatibleTypesDelegateLeft(DataFlowType dt1, DataFlowType dt2 ) } +pragma[nomagic] +private predicate compatibleTypesSourceContextParameterTypeLeft(DataFlowType dt1, DataFlowType dt2) { + dt1.isSourceContextParameterType() and not exists(dt2.asDelegate()) +} + /** * Holds if `t1` and `t2` are compatible, that is, whether data can flow from * a node of type `t1` to a node of type `t2`. @@ -2499,6 +2510,10 @@ predicate compatibleTypes(DataFlowType dt1, DataFlowType dt2) { compatibleTypesDelegateLeft(dt2, dt1) or dt1.asDelegate() = dt2.asDelegate() + or + compatibleTypesSourceContextParameterTypeLeft(dt1, dt2) + or + compatibleTypesSourceContextParameterTypeLeft(dt2, dt1) } pragma[nomagic] @@ -2511,6 +2526,8 @@ predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { uselessTypebound(t2) or compatibleTypesDelegateLeft(t1, t2) + or + compatibleTypesSourceContextParameterTypeLeft(t1, t2) } /** @@ -2582,7 +2599,7 @@ module PostUpdateNodes { call.getExpr() = init.(CollectionInitializer).getAnElementInitializer() or // E.g. `new Dictionary() { [0] = "a", [1] = "b" }` - call.getExpr() = init.(ObjectInitializer).getAMemberInitializer().getLValue() + call.getExpr() = init.(ObjectInitializer).getAMemberInitializer().getLeftOperand() ) } @@ -2795,7 +2812,7 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves preservesValue = true or exists(AddEventExpr aee | - nodeFrom.asExpr() = aee.getRValue() and + nodeFrom.asExpr() = aee.getRightOperand() and nodeTo.asExpr().(EventRead).getTarget() = aee.getTarget() and preservesValue = false ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index 024e9cf119d5..f8cec8c4d9f6 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -4,13 +4,17 @@ * Provides classes and predicates for dealing with MaD flow models specified * in data extensions and CSV format. * - * The CSV specification has the following columns: + * The extensible relations have the following columns: * - Sources: * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` * - Sinks: * `namespace; type; subtypes; name; signature; ext; input; kind; provenance` * - Summaries: * `namespace; type; subtypes; name; signature; ext; input; output; kind; provenance` + * - Barriers: + * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` + * - BarrierGuards: + * `namespace; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` * - Neutrals: * `namespace; type; name; signature; kind; provenance` * A neutral is used to indicate that a callable is neutral with respect to flow (no summary), source (is not a source) or sink (is not a sink). @@ -69,14 +73,17 @@ * - "Field[f]": Selects the contents of field `f`. * - "Property[p]": Selects the contents of property `p`. * - * 8. The `kind` column is a tag that can be referenced from QL to determine to + * 8. The `acceptingValue` column of barrier guard models specifies the condition + * under which the guard blocks flow. It can be one of "true" or "false". In + * the future "no-exception", "not-zero", "null", "not-null" may be supported. + * 9. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. For neutrals the kind can be `summary`, * `source` or `sink` to indicate that the neutral is neutral with respect to * flow (no summary), source (is not a source) or sink (is not a sink). - * 9. The `provenance` column is a tag to indicate the origin and verification of a model. + * 10. The `provenance` column is a tag to indicate the origin and verification of a model. * The format is {origin}-{verification} or just "manual" where the origin describes * the origin of the model and verification describes how the model has been verified. * Some examples are: @@ -230,11 +237,11 @@ module ModelValidation { result = "Unrecognized provenance description \"" + provenance + "\" in " + pred + " model." ) or - exists(string acceptingvalue | - barrierGuardModel(_, _, _, _, _, _, _, acceptingvalue, _, _, _) and - invalidAcceptingValue(acceptingvalue) and + exists(string acceptingValue | + barrierGuardModel(_, _, _, _, _, _, _, acceptingValue, _, _, _) and + invalidAcceptingValue(acceptingValue) and result = - "Unrecognized accepting value description \"" + acceptingvalue + + "Unrecognized accepting value description \"" + acceptingValue + "\" in barrier guard model." ) } @@ -482,13 +489,13 @@ private module Cached { private predicate barrierGuardChecks(Guard g, Expr e, GuardValue gv, TKindModelPair kmp) { exists( - SourceSinkInterpretationInput::InterpretNode n, AcceptingValue acceptingvalue, string kind, + SourceSinkInterpretationInput::InterpretNode n, AcceptingValue acceptingValue, string kind, string model | - isBarrierGuardNode(n, acceptingvalue, kind, model) and + isBarrierGuardNode(n, acceptingValue, kind, model) and n.asNode().asExpr() = e and kmp = TMkPair(kind, model) and - gv = convertAcceptingValue(acceptingvalue) + gv = convertAcceptingValue(acceptingValue) | g.(Call).getAnArgument() = e or g.(QualifiableExpr).getQualifier() = e ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll index 3461f0a51863..cd438ece284d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll @@ -33,7 +33,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index 6f9b621ff404..a7ab18a62901 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -215,9 +215,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { module SourceSinkInterpretationInput implements Impl::Private::External::SourceSinkInterpretationInputSig { - private import csharp as Cs + private import csharp as CS - class Element = Cs::Element; + class Element = CS::Element; predicate sourceElement( Element e, string output, string kind, Public::Provenance provenance, string model @@ -253,13 +253,13 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext | - barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingvalue, + barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance, model) and e = interpretElement(namespace, type, subtypes, name, signature, ext, _) ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index 7a592bebff0f..83593a5df36b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -337,7 +337,7 @@ private module CallGraph { pred = succ.(DelegateCreation).getArgument() or exists(AddEventExpr ae | succ.(EventAccess).getTarget() = ae.getTarget() | - pred = ae.getRValue() + pred = ae.getRightOperand() ) } @@ -1042,7 +1042,6 @@ string getToStringPrefix(Definition def) { } private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInputSig { - private import csharp as Cs private import semmle.code.csharp.controlflow.BasicBlocks private import codeql.util.Boolean diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index 99a50b36873e..d3ae19c6d18b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -47,7 +47,7 @@ predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::ContentSet c) private predicate localTaintExprStep(Expr e1, Expr e2) { e1 = e2.(ElementAccess).getQualifier() or - e1 = e2.(AddExpr).getAnOperand() + e1 = e2.(AddOperation).getAnOperand() or // A comparison expression where taint can flow from one of the // operands if the other operand is a constant value. diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll index e3f5deb98989..bea31ed7f551 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll @@ -23,7 +23,7 @@ predicate systemArrayLengthAccess(PropertyAccess pa) { * - a read of the `Length` of an array with `val` lengths. */ private predicate constantIntegerExpr(ExprNode e, int val) { - e.getValue().toInt() = val + e.getExpr().getIntValue() = val or exists(ExprNode src | e = getAnExplicitDefinitionRead(src) and diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index c9c3a937ef9e..ca0aa83f29fc 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -20,17 +20,17 @@ module Private { class ConditionalExpr = RU::ExprNode::ConditionalExpr; - class AddExpr = RU::ExprNode::AddExpr; + class AddExpr = RU::ExprNode::AddOperation; - class SubExpr = RU::ExprNode::SubExpr; + class SubExpr = RU::ExprNode::SubOperation; - class RemExpr = RU::ExprNode::RemExpr; + class RemExpr = RU::ExprNode::RemOperation; - class BitwiseAndExpr = RU::ExprNode::BitwiseAndExpr; + class BitwiseAndExpr = RU::ExprNode::BitwiseAndOperation; - class MulExpr = RU::ExprNode::MulExpr; + class MulExpr = RU::ExprNode::MulOperation; - class LeftShiftExpr = RU::ExprNode::LeftShiftExpr; + class LeftShiftExpr = RU::ExprNode::LeftShiftOperation; predicate guardControlsSsaRead = RU::guardControlsSsaRead/3; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll index 656bf9aae211..171f2d2f59e4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll @@ -21,7 +21,11 @@ private module Impl { /** Holds if SSA definition `def` equals `e + delta`. */ predicate ssaUpdateStep(ExplicitDefinition def, ExprNode e, int delta) { exists(ControlFlow::Node cfn | cfn = def.getControlFlowNode() | - e = cfn.(ExprNode::Assignment).getRValue() and delta = 0 + e = cfn.(ExprNode::Assignment).getRightOperand() and + delta = 0 and + not cfn instanceof ExprNode::AssignOperation + or + e = cfn.(ExprNode::AssignOperation) and delta = 0 or e = cfn.(ExprNode::PostIncrExpr).getOperand() and delta = 1 or @@ -35,7 +39,7 @@ private module Impl { /** Holds if `e1 + delta` equals `e2`. */ predicate valueFlowStep(ExprNode e2, ExprNode e1, int delta) { - e2.(ExprNode::AssignExpr).getRValue() = e1 and delta = 0 + e2.(ExprNode::AssignExpr).getRightOperand() = e1 and delta = 0 or e2.(ExprNode::UnaryPlusExpr).getOperand() = e1 and delta = 0 or @@ -48,15 +52,15 @@ private module Impl { e2.(ExprNode::PreDecrExpr).getOperand() = e1 and delta = -1 or exists(ConstantIntegerExpr x | - e2.(ExprNode::AddExpr).getAnOperand() = e1 and - e2.(ExprNode::AddExpr).getAnOperand() = x and + e2.(ExprNode::AddOperation).getAnOperand() = e1 and + e2.(ExprNode::AddOperation).getAnOperand() = x and e1 != x and x.getIntValue() = delta ) or exists(ConstantIntegerExpr x | - e2.(ExprNode::SubExpr).getLeftOperand() = e1 and - e2.(ExprNode::SubExpr).getRightOperand() = x and + e2.(ExprNode::SubOperation).getLeftOperand() = e1 and + e2.(ExprNode::SubOperation).getRightOperand() = x and x.getIntValue() = -delta ) or @@ -203,13 +207,13 @@ module ExprNode { override CS::Assignment e; /** Gets the left operand of this assignment. */ - ExprNode getLValue() { - result = unique(ExprNode res | hasChild(e, e.getLValue(), this, res) | res) + ExprNode getLeftOperand() { + result = unique(ExprNode res | hasChild(e, e.getLeftOperand(), this, res) | res) } /** Gets the right operand of this assignment. */ - ExprNode getRValue() { - result = unique(ExprNode res | hasChild(e, e.getRValue(), this, res) | res) + ExprNode getRightOperand() { + result = unique(ExprNode res | hasChild(e, e.getRightOperand(), this, res) | res) } } @@ -218,6 +222,15 @@ module ExprNode { override CS::AssignExpr e; } + /** A compound assignment operation. */ + class AssignOperation extends Assignment, BinaryOperation { + override CS::AssignOperation e; + + override ExprNode getLeftOperand() { result = Assignment.super.getLeftOperand() } + + override ExprNode getRightOperand() { result = Assignment.super.getRightOperand() } + } + /** A unary operation. */ class UnaryOperation extends ExprNode { override CS::UnaryOperation e; @@ -309,78 +322,78 @@ module ExprNode { } /** An addition operation. */ - class AddExpr extends BinaryOperation { - override CS::AddExpr e; + class AddOperation extends BinaryOperation { + override CS::AddOperation e; override TAddOp getOp() { any() } } /** A subtraction operation. */ - class SubExpr extends BinaryOperation { - override CS::SubExpr e; + class SubOperation extends BinaryOperation { + override CS::SubOperation e; override TSubOp getOp() { any() } } /** A multiplication operation. */ - class MulExpr extends BinaryOperation { - override CS::MulExpr e; + class MulOperation extends BinaryOperation { + override CS::MulOperation e; override TMulOp getOp() { any() } } /** A division operation. */ - class DivExpr extends BinaryOperation { - override CS::DivExpr e; + class DivOperation extends BinaryOperation { + override CS::DivOperation e; override TDivOp getOp() { any() } } /** A remainder operation. */ - class RemExpr extends BinaryOperation { - override CS::RemExpr e; + class RemOperation extends BinaryOperation { + override CS::RemOperation e; override TRemOp getOp() { any() } } /** A bitwise-and operation. */ - class BitwiseAndExpr extends BinaryOperation { - override CS::BitwiseAndExpr e; + class BitwiseAndOperation extends BinaryOperation { + override CS::BitwiseAndOperation e; override TBitAndOp getOp() { any() } } /** A bitwise-or operation. */ - class BitwiseOrExpr extends BinaryOperation { - override CS::BitwiseOrExpr e; + class BitwiseOrOperation extends BinaryOperation { + override CS::BitwiseOrOperation e; override TBitOrOp getOp() { any() } } /** A bitwise-xor operation. */ - class BitwiseXorExpr extends BinaryOperation { - override CS::BitwiseXorExpr e; + class BitwiseXorOperation extends BinaryOperation { + override CS::BitwiseXorOperation e; override TBitXorOp getOp() { any() } } /** A left-shift operation. */ - class LeftShiftExpr extends BinaryOperation { - override CS::LeftShiftExpr e; + class LeftShiftOperation extends BinaryOperation { + override CS::LeftShiftOperation e; override TLeftShiftOp getOp() { any() } } /** A right-shift operation. */ - class RightShiftExpr extends BinaryOperation { - override CS::RightShiftExpr e; + class RightShiftOperation extends BinaryOperation { + override CS::RightShiftOperation e; override TRightShiftOp getOp() { any() } } /** An unsigned right-shift operation. */ - class UnsignedRightShiftExpr extends BinaryOperation { - override CS::UnsignedRightShiftExpr e; + class UnsignedRightShiftOperation extends BinaryOperation { + override CS::UnsignedRightShiftOperation e; override TUnsignedRightShiftOp getOp() { any() } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 1bd86e19f34d..f64eceda1347 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -41,7 +41,7 @@ module Private { class RealLiteral = RU::ExprNode::RealLiteral; - class DivExpr = RU::ExprNode::DivExpr; + class DivExpr = RU::ExprNode::DivOperation; class UnaryOperation = RU::ExprNode::UnaryOperation; @@ -130,6 +130,11 @@ private module Impl { adef = def.getADefinition() and hasChild(adef.getExpr(), adef.getSource(), def.getControlFlowNode(), result) ) + or + exists(AssignableDefinitions::AssignOperationDefinition adef | + adef = def.getADefinition() and + result.getExpr() = adef.getSource() + ) } /** Holds if `def` can have any sign. */ @@ -163,7 +168,7 @@ private module Impl { /** Returned an expression that is assigned to `f`. */ ExprNode getAssignedValueToField(Field f) { result.getExpr() in [ - f.getAnAssignedValue(), any(AssignOperation a | a.getLValue() = f.getAnAccess()) + f.getAnAssignedValue(), any(AssignOperation a | a.getLeftOperand() = f.getAnAccess()) ] } @@ -226,7 +231,7 @@ private module Impl { /** Returns a sub expression of `e` for expression types where the sign depends on the child. */ ExprNode getASubExprWithSameSign(ExprNode e) { exists(Expr e_, Expr child | hasChild(e_, child, e, result) | - child = e_.(AssignExpr).getRValue() or + child = e_.(AssignExpr).getRightOperand() or child = e_.(UnaryPlusExpr).getOperand() or child = e_.(PostIncrExpr).getOperand() or child = e_.(PostDecrExpr).getOperand() or diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll index b26082b6250a..cf4b44239e92 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll @@ -29,7 +29,7 @@ ExprNode getAnExplicitDefinitionRead(ExprNode src) { ExprNode ssaRead(Definition v, int delta) { exists(v.getAReadAtNode(result)) and delta = 0 or - exists(ExprNode::AddExpr add, int d1, ConstantIntegerExpr c | + exists(ExprNode::AddOperation add, int d1, ConstantIntegerExpr c | result = add and delta = d1 - c.getIntValue() | @@ -38,7 +38,7 @@ ExprNode ssaRead(Definition v, int delta) { add.getRightOperand() = ssaRead(v, d1) and add.getLeftOperand() = c ) or - exists(ExprNode::SubExpr sub, int d1, ConstantIntegerExpr c | + exists(ExprNode::SubOperation sub, int d1, ConstantIntegerExpr c | result = sub and sub.getLeftOperand() = ssaRead(v, d1) and sub.getRightOperand() = c and @@ -55,5 +55,5 @@ ExprNode ssaRead(Definition v, int delta) { or v.(ExplicitDefinition).getControlFlowNode().(ExprNode::Assignment) = result and delta = 0 or - result.(ExprNode::AssignExpr).getRValue() = ssaRead(v, delta) + result.(ExprNode::AssignExpr).getRightOperand() = ssaRead(v, delta) } diff --git a/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll b/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll index a83967441d74..770fab65f545 100644 --- a/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll @@ -202,11 +202,9 @@ private module Internal { private predicate isPotentialEventCall( AssignArithmeticOperation aao, DynamicMemberAccess dma, string name ) { - exists(DynamicOperatorCall doc, AssignExpr ae | - ae = aao.getExpandedAssignment() and - dma = ae.getLValue() and - doc = ae.getRValue() - | + aao instanceof DynamicOperatorCall and + dma = aao.getLeftOperand() and + ( aao instanceof AssignAddExpr and name = "add_" + dma.getLateBoundTargetName() or @@ -1350,7 +1348,7 @@ private module Internal { any(DynamicMemberAccess dma | this = TDispatchDynamicEventAccess(_, dma, _)).getQualifier() } - override Expr getArgument(int i) { i = 0 and result = this.getCall().getRValue() } + override Expr getArgument(int i) { i = 0 and result = this.getCall().getRightOperand() } } /** A call to a constructor using dynamic types. */ diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll index 84375bc70130..d9fb16f0974b 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll @@ -112,7 +112,7 @@ class BaseAccess extends Access, @base_access_expr { class MemberAccess extends Access, QualifiableExpr, @member_access_expr { override predicate hasImplicitThisQualifier() { QualifiableExpr.super.hasImplicitThisQualifier() and - not exists(MemberInitializer mi | mi.getLValue() = this) + not exists(MemberInitializer mi | mi.getLeftOperand() = this) } override Member getQualifiedDeclaration() { result = this.getTarget() } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/ArithmeticOperation.qll b/csharp/ql/lib/semmle/code/csharp/exprs/ArithmeticOperation.qll index f20bfba1589a..193c48ed3a2b 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/ArithmeticOperation.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/ArithmeticOperation.qll @@ -107,7 +107,7 @@ class BinaryArithmeticOperation extends ArithmeticOperation, BinaryOperation, @b /** * An addition operation, for example `x + y`. */ -class AddExpr extends BinaryArithmeticOperation, @add_expr { +class AddExpr extends BinaryArithmeticOperation, AddOperation, @add_expr { override string getOperator() { result = "+" } override string getAPrimaryQlClass() { result = "AddExpr" } @@ -116,7 +116,7 @@ class AddExpr extends BinaryArithmeticOperation, @add_expr { /** * A subtraction operation, for example `x - y`. */ -class SubExpr extends BinaryArithmeticOperation, @sub_expr { +class SubExpr extends BinaryArithmeticOperation, SubOperation, @sub_expr { override string getOperator() { result = "-" } override string getAPrimaryQlClass() { result = "SubExpr" } @@ -125,7 +125,7 @@ class SubExpr extends BinaryArithmeticOperation, @sub_expr { /** * A multiplication operation, for example `x * y`. */ -class MulExpr extends BinaryArithmeticOperation, @mul_expr { +class MulExpr extends BinaryArithmeticOperation, MulOperation, @mul_expr { override string getOperator() { result = "*" } override string getAPrimaryQlClass() { result = "MulExpr" } @@ -134,22 +134,16 @@ class MulExpr extends BinaryArithmeticOperation, @mul_expr { /** * A division operation, for example `x / y`. */ -class DivExpr extends BinaryArithmeticOperation, @div_expr { +class DivExpr extends BinaryArithmeticOperation, DivOperation, @div_expr { override string getOperator() { result = "/" } - /** Gets the numerator of this division operation. */ - Expr getNumerator() { result = this.getLeftOperand() } - - /** Gets the denominator of this division operation. */ - Expr getDenominator() { result = this.getRightOperand() } - override string getAPrimaryQlClass() { result = "DivExpr" } } /** * A remainder operation, for example `x % y`. */ -class RemExpr extends BinaryArithmeticOperation, @rem_expr { +class RemExpr extends BinaryArithmeticOperation, RemOperation, @rem_expr { override string getOperator() { result = "%" } override string getAPrimaryQlClass() { result = "RemExpr" } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll index 9fa2a93724d4..8c7dd80da243 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll @@ -17,21 +17,25 @@ class Assignment extends BinaryOperation, @assign_expr { implies // Same as `this.(LocalVariableDeclExpr).hasInitializer()` but avoids // negative recursion - expr_parent(_, 0, this) + expr_parent(_, 1, this) } - override Expr getLeftOperand() { result = this.getChild(1) } - - override Expr getRightOperand() { result = this.getChild(0) } - - /** Gets the left operand of this assignment. */ - Expr getLValue() { result = this.getChild(1) } + /** + * DEPRECATED: Use `getLeftOperand` instead. + * + * Gets the left operand of this assignment. + */ + deprecated Expr getLValue() { result = this.getLeftOperand() } - /** Gets the right operand of this assignment. */ - Expr getRValue() { result = this.getChild(0) } + /** + * DEPRECATED: Use `getRightOperand` instead. + * + * Gets the right operand of this assignment. + */ + deprecated Expr getRValue() { result = this.getRightOperand() } /** Gets the variable being assigned to, if any. */ - Variable getTargetVariable() { result.getAnAccess() = this.getLValue() } + Variable getTargetVariable() { result.getAnAccess() = this.getLeftOperand() } override string getOperator() { none() } } @@ -44,7 +48,12 @@ class LocalVariableDeclAndInitExpr extends LocalVariableDeclExpr, Assignment { override LocalVariable getTargetVariable() { result = this.getVariable() } - override LocalVariableAccess getLValue() { result = Assignment.super.getLValue() } + /** + * DEPRECATED: Use `getLeftOperand` instead. + */ + deprecated override LocalVariableAccess getLValue() { result = this.getLeftOperand() } + + override LocalVariableAccess getLeftOperand() { result = Assignment.super.getLeftOperand() } override string toString() { result = LocalVariableDeclExpr.super.toString() + " = ..." } @@ -65,36 +74,36 @@ class AssignExpr extends Assignment, @simple_assign_expr { /** * An assignment operation. Either an arithmetic assignment operation * (`AssignArithmeticOperation`), a bitwise assignment operation - * (`AssignBitwiseOperation`), or an event assignment (`AddOrRemoveEventExpr`). + * (`AssignBitwiseOperation`), an event assignment (`AddOrRemoveEventExpr`), or + * a null-coalescing assignment (`AssignCoalesceExpr`). */ class AssignOperation extends Assignment, @assign_op_expr { override string getOperator() { none() } /** - * Gets the expanded version of this assignment operation, if any. - * - * For example, if this assignment operation is `x += y` then - * the expanded assignment is `x = x + y`. - * - * If an expanded version exists, then it is used in the control - * flow graph. + * Expanded versions of compound assignments are no longer extracted. */ - AssignExpr getExpandedAssignment() { expr_parent(result, 2, this) } + deprecated AssignExpr getExpandedAssignment() { none() } /** - * Holds if this assignment operation has an expanded version. - * - * For example, if this assignment operation is `x += y` then - * it has the expanded version `x = x + y`. - * - * If an expanded version exists, then it is used in the control - * flow graph. + * Expanded versions of compound assignments are no longer extracted. */ - predicate hasExpandedAssignment() { exists(this.getExpandedAssignment()) } + deprecated predicate hasExpandedAssignment() { none() } override string toString() { result = "... " + this.getOperator() + " ..." } } +/** + * A compound assignment operation that implicitly invokes an operator. + * For example, `x += y` assigns the result of `x + y` to `x`. + * + * Either an arithmetic assignment operation (`AssignArithmeticOperation`) or a bitwise + * assignment operation (`AssignBitwiseOperation`). + */ +class AssignCallOperation extends AssignOperation, OperatorCall, @assign_op_call_expr { + override string toString() { result = AssignOperation.super.toString() } +} + /** * An arithmetic assignment operation. Either an addition assignment operation * (`AssignAddExpr`), a subtraction assignment operation (`AssignSubExpr`), a @@ -102,12 +111,12 @@ class AssignOperation extends Assignment, @assign_op_expr { * operation (`AssignDivExpr`), or a remainder assignment operation * (`AssignRemExpr`). */ -class AssignArithmeticOperation extends AssignOperation, @assign_arith_expr { } +class AssignArithmeticOperation extends AssignCallOperation, @assign_arith_expr { } /** * An addition assignment operation, for example `x += y`. */ -class AssignAddExpr extends AssignArithmeticOperation, @assign_add_expr { +class AssignAddExpr extends AssignArithmeticOperation, AddOperation, @assign_add_expr { override string getOperator() { result = "+=" } override string getAPrimaryQlClass() { result = "AssignAddExpr" } @@ -116,7 +125,7 @@ class AssignAddExpr extends AssignArithmeticOperation, @assign_add_expr { /** * A subtraction assignment operation, for example `x -= y`. */ -class AssignSubExpr extends AssignArithmeticOperation, @assign_sub_expr { +class AssignSubExpr extends AssignArithmeticOperation, SubOperation, @assign_sub_expr { override string getOperator() { result = "-=" } override string getAPrimaryQlClass() { result = "AssignSubExpr" } @@ -125,7 +134,7 @@ class AssignSubExpr extends AssignArithmeticOperation, @assign_sub_expr { /** * An multiplication assignment operation, for example `x *= y`. */ -class AssignMulExpr extends AssignArithmeticOperation, @assign_mul_expr { +class AssignMulExpr extends AssignArithmeticOperation, MulOperation, @assign_mul_expr { override string getOperator() { result = "*=" } override string getAPrimaryQlClass() { result = "AssignMulExpr" } @@ -134,7 +143,7 @@ class AssignMulExpr extends AssignArithmeticOperation, @assign_mul_expr { /** * An division assignment operation, for example `x /= y`. */ -class AssignDivExpr extends AssignArithmeticOperation, @assign_div_expr { +class AssignDivExpr extends AssignArithmeticOperation, DivOperation, @assign_div_expr { override string getOperator() { result = "/=" } override string getAPrimaryQlClass() { result = "AssignDivExpr" } @@ -143,7 +152,7 @@ class AssignDivExpr extends AssignArithmeticOperation, @assign_div_expr { /** * A remainder assignment operation, for example `x %= y`. */ -class AssignRemExpr extends AssignArithmeticOperation, @assign_rem_expr { +class AssignRemExpr extends AssignArithmeticOperation, RemOperation, @assign_rem_expr { override string getOperator() { result = "%=" } override string getAPrimaryQlClass() { result = "AssignRemExpr" } @@ -158,12 +167,12 @@ class AssignRemExpr extends AssignArithmeticOperation, @assign_rem_expr { * operation (`AssignRightShiftExpr`), or an unsigned right-shift assignment * operation (`AssignUnsignedRightShiftExpr`). */ -class AssignBitwiseOperation extends AssignOperation, @assign_bitwise_expr { } +class AssignBitwiseOperation extends AssignCallOperation, @assign_bitwise_expr { } /** * A bitwise-and assignment operation, for example `x &= y`. */ -class AssignAndExpr extends AssignBitwiseOperation, @assign_and_expr { +class AssignAndExpr extends AssignBitwiseOperation, BitwiseAndOperation, @assign_and_expr { override string getOperator() { result = "&=" } override string getAPrimaryQlClass() { result = "AssignAndExpr" } @@ -172,7 +181,7 @@ class AssignAndExpr extends AssignBitwiseOperation, @assign_and_expr { /** * A bitwise-or assignment operation, for example `x |= y`. */ -class AssignOrExpr extends AssignBitwiseOperation, @assign_or_expr { +class AssignOrExpr extends AssignBitwiseOperation, BitwiseOrOperation, @assign_or_expr { override string getOperator() { result = "|=" } override string getAPrimaryQlClass() { result = "AssignOrExpr" } @@ -181,7 +190,7 @@ class AssignOrExpr extends AssignBitwiseOperation, @assign_or_expr { /** * A bitwise exclusive-or assignment operation, for example `x ^= y`. */ -class AssignXorExpr extends AssignBitwiseOperation, @assign_xor_expr { +class AssignXorExpr extends AssignBitwiseOperation, BitwiseXorOperation, @assign_xor_expr { override string getOperator() { result = "^=" } override string getAPrimaryQlClass() { result = "AssignXorExpr" } @@ -190,7 +199,7 @@ class AssignXorExpr extends AssignBitwiseOperation, @assign_xor_expr { /** * A left-shift assignment operation, for example `x <<= y`. */ -class AssignLeftShiftExpr extends AssignBitwiseOperation, @assign_lshift_expr { +class AssignLeftShiftExpr extends AssignBitwiseOperation, LeftShiftOperation, @assign_lshift_expr { override string getOperator() { result = "<<=" } override string getAPrimaryQlClass() { result = "AssignLeftShiftExpr" } @@ -199,7 +208,7 @@ class AssignLeftShiftExpr extends AssignBitwiseOperation, @assign_lshift_expr { /** * A right-shift assignment operation, for example `x >>= y`. */ -class AssignRightShiftExpr extends AssignBitwiseOperation, @assign_rshift_expr { +class AssignRightShiftExpr extends AssignBitwiseOperation, RightShiftOperation, @assign_rshift_expr { override string getOperator() { result = ">>=" } override string getAPrimaryQlClass() { result = "AssignRightShiftExpr" } @@ -208,23 +217,33 @@ class AssignRightShiftExpr extends AssignBitwiseOperation, @assign_rshift_expr { /** * An unsigned right-shift assignment operation, for example `x >>>= y`. */ -class AssignUnsighedRightShiftExpr extends AssignBitwiseOperation, @assign_urshift_expr { +class AssignUnsignedRightShiftExpr extends AssignBitwiseOperation, UnsignedRightShiftOperation, + @assign_urshift_expr +{ override string getOperator() { result = ">>>=" } - override string getAPrimaryQlClass() { result = "AssignUnsighedRightShiftExpr" } + override string getAPrimaryQlClass() { result = "AssignUnsignedRightShiftExpr" } } +/** + * DEPRECATED: Use `AssignUnsignedRightShiftExpr` instead. + */ +deprecated class AssignUnsighedRightShiftExpr = AssignUnsignedRightShiftExpr; + /** * An event assignment. Either an event addition (`AddEventExpr`) or an event * removal (`RemoveEventExpr`). */ class AddOrRemoveEventExpr extends AssignOperation, @assign_event_expr { /** Gets the event targeted by this event assignment. */ - Event getTarget() { result = this.getLValue().getTarget() } + Event getTarget() { result = this.getLeftOperand().getTarget() } - override EventAccess getLValue() { result = this.getChild(1) } + /** + * DEPRECATED: Use `getLeftOperand` instead. + */ + deprecated override EventAccess getLValue() { result = this.getLeftOperand() } - override Expr getRValue() { result = this.getChild(0) } + override EventAccess getLeftOperand() { result = this.getChild(0) } } /** @@ -276,7 +295,7 @@ class RemoveEventExpr extends AddOrRemoveEventExpr, @remove_event_expr { /** * A null-coalescing assignment operation, for example `x ??= y`. */ -class AssignCoalesceExpr extends AssignOperation, @assign_coalesce_expr { +class AssignCoalesceExpr extends AssignOperation, NullCoalescingOperation, @assign_coalesce_expr { override string toString() { result = "... ??= ..." } override string getAPrimaryQlClass() { result = "AssignCoalesceExpr" } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/BitwiseOperation.qll b/csharp/ql/lib/semmle/code/csharp/exprs/BitwiseOperation.qll index d818a1d08f87..14bb3d74e2b2 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/BitwiseOperation.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/BitwiseOperation.qll @@ -41,7 +41,7 @@ class BinaryBitwiseOperation extends BitwiseOperation, BinaryOperation, @bin_bit /** * A left-shift operation, for example `x << y`. */ -class LeftShiftExpr extends BinaryBitwiseOperation, @lshift_expr { +class LeftShiftExpr extends BinaryBitwiseOperation, LeftShiftOperation, @lshift_expr { override string getOperator() { result = "<<" } override string getAPrimaryQlClass() { result = "LeftShiftExpr" } @@ -50,7 +50,7 @@ class LeftShiftExpr extends BinaryBitwiseOperation, @lshift_expr { /** * A right-shift operation, for example `x >> y`. */ -class RightShiftExpr extends BinaryBitwiseOperation, @rshift_expr { +class RightShiftExpr extends BinaryBitwiseOperation, RightShiftOperation, @rshift_expr { override string getOperator() { result = ">>" } override string getAPrimaryQlClass() { result = "RightShiftExpr" } @@ -59,7 +59,9 @@ class RightShiftExpr extends BinaryBitwiseOperation, @rshift_expr { /** * An unsigned right-shift operation, for example `x >>> y`. */ -class UnsignedRightShiftExpr extends BinaryBitwiseOperation, @urshift_expr { +class UnsignedRightShiftExpr extends BinaryBitwiseOperation, UnsignedRightShiftOperation, + @urshift_expr +{ override string getOperator() { result = ">>>" } override string getAPrimaryQlClass() { result = "UnsignedRightShiftExpr" } @@ -68,7 +70,7 @@ class UnsignedRightShiftExpr extends BinaryBitwiseOperation, @urshift_expr { /** * A bitwise-and operation, for example `x & y`. */ -class BitwiseAndExpr extends BinaryBitwiseOperation, @bit_and_expr { +class BitwiseAndExpr extends BinaryBitwiseOperation, BitwiseAndOperation, @bit_and_expr { override string getOperator() { result = "&" } override string getAPrimaryQlClass() { result = "BitwiseAndExpr" } @@ -77,7 +79,7 @@ class BitwiseAndExpr extends BinaryBitwiseOperation, @bit_and_expr { /** * A bitwise-or operation, for example `x | y`. */ -class BitwiseOrExpr extends BinaryBitwiseOperation, @bit_or_expr { +class BitwiseOrExpr extends BinaryBitwiseOperation, BitwiseOrOperation, @bit_or_expr { override string getOperator() { result = "|" } override string getAPrimaryQlClass() { result = "BitwiseOrExpr" } @@ -86,7 +88,7 @@ class BitwiseOrExpr extends BinaryBitwiseOperation, @bit_or_expr { /** * A bitwise exclusive-or operation, for example `x ^ y`. */ -class BitwiseXorExpr extends BinaryBitwiseOperation, @bit_xor_expr { +class BitwiseXorExpr extends BinaryBitwiseOperation, BitwiseXorOperation, @bit_xor_expr { override string getOperator() { result = "^" } override string getAPrimaryQlClass() { result = "BitwiseXorExpr" } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll index f8b51a990ed1..272a8e0caae9 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll @@ -478,7 +478,7 @@ class ConstructorInitializer extends Call, @constructor_init_expr { } /** - * A call to a user-defined operator, for example `this + other` + * A call to an operator, for example `this + other` * on line 7 in * * ```csharp @@ -493,12 +493,16 @@ class ConstructorInitializer extends Call, @constructor_init_expr { * } * ``` */ -class OperatorCall extends Call, LateBindableExpr, @operator_invocation_expr { +class OperatorCall extends Call, LateBindableExpr, @op_invoke_expr { override Operator getTarget() { expr_call(this, result) } override Operator getARuntimeTarget() { result = Call.super.getARuntimeTarget() } - override string toString() { result = "call to operator " + this.getTarget().getName() } + override string toString() { + if this instanceof DynamicOperatorCall + then result = "dynamic call to operator " + this.getLateBoundTargetName() + else result = "call to operator " + this.getTarget().getName() + } override string getAPrimaryQlClass() { result = "OperatorCall" } } @@ -769,7 +773,7 @@ class EventCall extends AccessorCall, EventAccessExpr { override EventAccessor getTarget() { exists(Event e, AddOrRemoveEventExpr aoree | e = this.getEvent() and - aoree.getLValue() = this + aoree.getLeftOperand() = this | aoree instanceof AddEventExpr and result = e.getAddEventAccessor() or @@ -780,8 +784,8 @@ class EventCall extends AccessorCall, EventAccessExpr { override Expr getArgument(int i) { i = 0 and exists(AddOrRemoveEventExpr aoree | - aoree.getLValue() = this and - result = aoree.getRValue() + aoree.getLeftOperand() = this and + result = aoree.getRightOperand() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll index 0e16e0da9c3c..19ff9fac53b2 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll @@ -95,7 +95,7 @@ class MemberInitializer extends AssignExpr { MemberInitializer() { this.getParent() instanceof ObjectInitializer } /** Gets the initialized member. */ - Member getInitializedMember() { result.getAnAccess() = this.getLValue() } + Member getInitializedMember() { result.getAnAccess() = this.getLeftOperand() } override string getAPrimaryQlClass() { result = "MemberInitializer" } } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Dynamic.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Dynamic.qll index 04ea9f062a50..bfc5c36ff37c 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Dynamic.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Dynamic.qll @@ -96,13 +96,7 @@ class DynamicMethodCall extends DynamicExpr, MethodCall { * Unlike an ordinary call to a user-defined operator (`OperatorCall`), the * target operator may not be known at compile-time (as in the example above). */ -class DynamicOperatorCall extends DynamicExpr, OperatorCall { - override string toString() { - result = "dynamic call to operator " + this.getLateBoundTargetName() - } - - override string getAPrimaryQlClass() { result = "DynamicOperatorCall" } -} +class DynamicOperatorCall extends DynamicExpr, OperatorCall { } /** * A call to a user-defined mutator operator where the operand is a `dynamic` diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll index c3b9bcc363b3..a26afb004901 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll @@ -14,6 +14,7 @@ import Creation import Dynamic import Literal import LogicalOperation +import Operation import semmle.code.csharp.controlflow.ControlFlowElement import semmle.code.csharp.Location import semmle.code.csharp.Stmt @@ -56,6 +57,13 @@ class Expr extends ControlFlowElement, @expr { /** Gets the value of this expression, if any */ string getValue() { expr_value(this, result) } + /** Gets the integer value of this expression, if any. */ + cached + int getIntValue() { + result = this.getValue().toInt() and + (this.getType() instanceof IntegralType or this.getType() instanceof Enum) + } + /** Holds if this expression has a value. */ final predicate hasValue() { exists(this.getValue()) } @@ -65,25 +73,11 @@ class Expr extends ControlFlowElement, @expr { /** Gets the enclosing callable of this expression, if any. */ override Callable getEnclosingCallable() { enclosingCallable(this, result) } - pragma[nomagic] - private predicate isExpandedAssignmentRValueDescendant() { - this = - any(AssignOperation op).getExpandedAssignment().getRValue().getChildExpr(0).getAChildExpr() - or - exists(Expr parent | - parent.isExpandedAssignmentRValueDescendant() and - this = parent.getAChildExpr() - ) - } - /** * Holds if this expression is generated by the compiler and does not appear * explicitly in the source code. */ - final predicate isImplicit() { - compiler_generated(this) or - this.isExpandedAssignmentRValueDescendant() - } + final predicate isImplicit() { compiler_generated(this) } /** * Gets an expression that is the result of stripping (recursively) all @@ -168,7 +162,7 @@ class LocalVariableDeclExpr extends Expr, @local_var_decl_expr { string getName() { result = this.getVariable().getName() } /** Gets the initializer expression of this local variable declaration, if any. */ - Expr getInitializer() { result = this.getChild(0) } + Expr getInitializer() { result = this.getChild(1) } /** Holds if this local variable declaration has an initializer. */ predicate hasInitializer() { exists(this.getInitializer()) } @@ -188,7 +182,7 @@ class LocalVariableDeclExpr extends Expr, @local_var_decl_expr { /** Gets the variable access used in this declaration, if any. */ LocalVariableAccess getAccess() { - result = this.getChild(1) or + result = this.getChild(0) or result = this // `out` argument } @@ -1112,7 +1106,7 @@ class QualifiableExpr extends Expr, @qualifiable_expr { } private Expr getAnAssignOrForeachChild() { - result = any(AssignExpr e).getLValue() + result = any(AssignExpr e).getLeftOperand() or result = any(ForeachStmt fs).getVariableDeclTuple() or diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/LogicalOperation.qll b/csharp/ql/lib/semmle/code/csharp/exprs/LogicalOperation.qll index e94d8ff93e7a..4161f734c9b7 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/LogicalOperation.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/LogicalOperation.qll @@ -65,7 +65,9 @@ class LogicalOrExpr extends BinaryLogicalOperation, @log_or_expr { * } * ``` */ -class NullCoalescingExpr extends BinaryLogicalOperation, @null_coalescing_expr { +class NullCoalescingExpr extends BinaryLogicalOperation, NullCoalescingOperation, + @null_coalescing_expr +{ override string getOperator() { result = "??" } override string getAPrimaryQlClass() { result = "NullCoalescingExpr" } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Operation.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Operation.qll new file mode 100644 index 000000000000..1f816baea868 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Operation.qll @@ -0,0 +1,71 @@ +/** + * Provides classes for operations that also have compound assignment forms. + */ + +import Expr + +/** + * An addition operation, either `x + y` or `x += y`. + */ +class AddOperation extends BinaryOperation, @add_operation { } + +/** + * A subtraction operation, either `x - y` or `x -= y`. + */ +class SubOperation extends BinaryOperation, @sub_operation { } + +/** + * A multiplication operation, either `x * y` or `x *= y`. + */ +class MulOperation extends BinaryOperation, @mul_operation { } + +/** + * A division operation, either `x / y` or `x /= y`. + */ +class DivOperation extends BinaryOperation, @div_operation { + /** Gets the numerator of this division operation. */ + Expr getNumerator() { result = this.getLeftOperand() } + + /** Gets the denominator of this division operation. */ + Expr getDenominator() { result = this.getRightOperand() } +} + +/** + * A remainder operation, either `x % y` or `x %= y`. + */ +class RemOperation extends BinaryOperation, @rem_operation { } + +/** + * A bitwise-and operation, either `x & y` or `x &= y`. + */ +class BitwiseAndOperation extends BinaryOperation, @and_operation { } + +/** + * A bitwise-or operation, either `x | y` or `x |= y`. + */ +class BitwiseOrOperation extends BinaryOperation, @or_operation { } + +/** + * A bitwise exclusive-or operation, either `x ^ y` or `x ^= y`. + */ +class BitwiseXorOperation extends BinaryOperation, @xor_operation { } + +/** + * A left-shift operation, either `x << y` or `x <<= y`. + */ +class LeftShiftOperation extends BinaryOperation, @lshift_operation { } + +/** + * A right-shift operation, either `x >> y` or `x >>= y`. + */ +class RightShiftOperation extends BinaryOperation, @rshift_operation { } + +/** + * An unsigned right-shift operation, either `x >>> y` or `x >>>= y`. + */ +class UnsignedRightShiftOperation extends BinaryOperation, @urshift_operation { } + +/** + * A null-coalescing operation, either `x ?? y` or `x ??= y`. + */ +class NullCoalescingOperation extends BinaryOperation, @null_coalescing_operation { } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll index 9ab9a026fd29..0beec9a84b28 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll @@ -41,6 +41,6 @@ class ReturnedByMockObject extends ObjectCreation { * Gets a value used to initialize a member of this object creation. */ Expr getAMemberInitializationValue() { - result = this.getInitializer().(ObjectInitializer).getAMemberInitializer().getRValue() + result = this.getInitializer().(ObjectInitializer).getAMemberInitializer().getRightOperand() } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll index 6b1eb7b67fb7..58d6d68bf0ea 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll @@ -17,14 +17,14 @@ abstract class SqlExpr extends Expr { class CommandTextAssignmentSqlExpr extends SqlExpr, AssignExpr { CommandTextAssignmentSqlExpr() { exists(Property p, SystemDataIDbCommandInterface i, Property text | - p = this.getLValue().(PropertyAccess).getTarget() and + p = this.getLeftOperand().(PropertyAccess).getTarget() and text = i.getCommandTextProperty() | p.overridesOrImplementsOrEquals(text) ) } - override Expr getSql() { result = this.getRValue() } + override Expr getSql() { result = this.getRightOperand() } } /** A construction of an unknown `IDbCommand` object. */ diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll index c0edf9e110e1..798a8ed38222 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll @@ -131,7 +131,7 @@ class SystemXmlSchemaXmlSchemaValidationFlags extends EnumConstant { } } -private Expr getBitwiseOrOperand(Expr e) { result = e.(BitwiseOrExpr).getAnOperand() } +private Expr getBitwiseOrOperand(Expr e) { result = e.(BitwiseOrOperation).getAnOperand() } /** A creation of an instance of `System.Xml.XmlReaderSettings`. */ class XmlReaderSettingsCreation extends ObjectCreation { diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll index 2c0ba292b9c5..aca2cb2cb1c3 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll @@ -81,7 +81,7 @@ class SystemRuntimeCompilerServicesInlineArrayAttribute extends Attribute { /** * Gets the length of the inline array. */ - int getLength() { result = this.getConstructorArgument(0).getValue().toInt() } + int getLength() { result = this.getConstructorArgument(0).getIntValue() } } /** An attribute of type `System.Runtime.CompilerServices.OverloadResolutionPriority`. */ @@ -94,5 +94,5 @@ class SystemRuntimeCompilerServicesOverloadResolutionPriorityAttribute extends A /** * Gets the priority number. */ - int getPriority() { result = this.getConstructorArgument(0).getValue().toInt() } + int getPriority() { result = this.getConstructorArgument(0).getIntValue() } } diff --git a/csharp/ql/lib/semmle/code/csharp/metrics/Complexity.qll b/csharp/ql/lib/semmle/code/csharp/metrics/Complexity.qll index 2f37d23fe49f..392f13d118ee 100644 --- a/csharp/ql/lib/semmle/code/csharp/metrics/Complexity.qll +++ b/csharp/ql/lib/semmle/code/csharp/metrics/Complexity.qll @@ -32,7 +32,7 @@ private predicate branchingExpr(Expr expr) { expr instanceof ConditionalExpr or expr instanceof LogicalAndExpr or expr instanceof LogicalOrExpr or - expr instanceof NullCoalescingExpr + expr instanceof NullCoalescingOperation } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll index 56b6294949b8..e7cb6d8e3081 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -100,20 +100,20 @@ Expr getAValueForCookiePolicyProp(string prop) { Expr getAValueForProp(ObjectCreation create, Assignment a, string prop) { // values set in object init exists(MemberInitializer init, Expr src, PropertyAccess pa | - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName(prop) and init = create.getInitializer().(ObjectInitializer).getAMemberInitializer() and - init.getLValue() = pa and - DataFlow::localExprFlow(src, init.getRValue()) and + init.getLeftOperand() = pa and + DataFlow::localExprFlow(src, init.getRightOperand()) and result = src ) or // values set on var that create is assigned to exists(Expr src, PropertyAccess pa | - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName(prop) and DataFlow::localExprFlow(create, pa.getQualifier()) and - DataFlow::localExprFlow(src, a.getRValue()) and + DataFlow::localExprFlow(src, a.getRightOperand()) and result = src ) } @@ -138,15 +138,15 @@ private module OnAppendCookieTrackingConfig impl exists(PropertyWrite pw, Assignment delegateAssign, Callable c | pw.getProperty().getName() = "OnAppendCookie" and pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreBuilderCookiePolicyOptions and - delegateAssign.getLValue() = pw and + delegateAssign.getLeftOperand() = pw and ( exists(LambdaExpr lambda | - delegateAssign.getRValue() = lambda and + delegateAssign.getRightOperand() = lambda and lambda = c ) or exists(DelegateCreation delegate | - delegateAssign.getRValue() = delegate and + delegateAssign.getRightOperand() = delegate and delegate.getArgument().(CallableAccess).getTarget() = c ) ) and @@ -159,9 +159,9 @@ private module OnAppendCookieTrackingConfig impl exists(PropertyWrite pw, Assignment a | pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieOptions and pw.getProperty().getName() = getPropertyName() and - a.getLValue() = pw and + a.getLeftOperand() = pw and exists(Expr val | - DataFlow::localExprFlow(val, a.getRValue()) and + DataFlow::localExprFlow(val, a.getRightOperand()) and val.getValue() = "true" ) and sink.asExpr() = pw.getQualifier() diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll index 22023ebc4090..293b8ff9b8b2 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll @@ -52,9 +52,17 @@ private class HtmlSanitizer extends Sanitizer { } /** - * An argument to a call to a method on a logger class. + * An argument to a call to a method on a logger class, excluding extension methods + * with source code which are analyzed interprocedurally. */ -private class LogForgingLogMessageSink extends Sink, LogMessageSink { } +private class LogForgingLogMessageSink extends Sink, LogMessageSink { + LogForgingLogMessageSink() { + not exists(ExtensionMethodCall mc | + this.getExpr() = mc.getAnArgument() and + mc.getTarget().fromSource() + ) + } +} /** * An argument to a call to a method on a trace class. diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll index 5b2bd407a5ce..3c8911ef8074 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll @@ -126,16 +126,16 @@ private module TypeNameTrackingConfig implements DataFlow::ConfigSig { or node1.getType() instanceof TypeNameHandlingEnum and exists(PropertyWrite pw, Property p, Assignment a | - a.getLValue() = pw and + a.getLeftOperand() = pw and pw.getProperty() = p and p.getDeclaringType() instanceof JsonSerializerSettingsClass and p.hasName("TypeNameHandling") and ( - node1.asExpr() = a.getRValue() and + node1.asExpr() = a.getRightOperand() and node2.asExpr() = pw.getQualifier() or exists(ObjectInitializer oi | - node1.asExpr() = oi.getAMemberInitializer().getRValue() and + node1.asExpr() = oi.getAMemberInitializer().getRightOperand() and node2.asExpr() = oi ) ) diff --git a/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll index 1abeaf797b00..765dc2adf54a 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll @@ -84,15 +84,15 @@ private Expr getAValueForProp(ObjectCreation create, string prop) { // values set in object init exists(MemberInitializer init | init = create.getInitializer().(ObjectInitializer).getAMemberInitializer() and - init.getLValue().(PropertyAccess).getTarget().hasName(prop) and - result = init.getRValue() + init.getLeftOperand().(PropertyAccess).getTarget().hasName(prop) and + result = init.getRightOperand() ) or // values set on var that create is assigned to exists(Assignment propAssign | - DataFlow::localExprFlow(create, propAssign.getLValue().(PropertyAccess).getQualifier()) and - propAssign.getLValue().(PropertyAccess).getTarget().hasName(prop) and - result = propAssign.getRValue() + DataFlow::localExprFlow(create, propAssign.getLeftOperand().(PropertyAccess).getQualifier()) and + propAssign.getLeftOperand().(PropertyAccess).getTarget().hasName(prop) and + result = propAssign.getRightOperand() ) } diff --git a/csharp/ql/lib/semmlecode.csharp.dbscheme b/csharp/ql/lib/semmlecode.csharp.dbscheme index e73ca2c93df8..19b8cc3e2dc7 100644 --- a/csharp/ql/lib/semmlecode.csharp.dbscheme +++ b/csharp/ql/lib/semmlecode.csharp.dbscheme @@ -1216,9 +1216,23 @@ case @expr.kind of | @string_literal_expr | @null_literal_expr; @assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; -@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; @assign_event_expr = @add_event_expr | @remove_event_expr; +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + @assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr | @assign_rem_expr @assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr @@ -1270,14 +1284,15 @@ case @expr.kind of @anonymous_function_expr = @lambda_expr | @anonymous_method_expr; -@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr | @delegate_invocation_expr | @object_creation_expr | @call_access_expr | @local_function_invocation_expr | @function_pointer_invocation_expr; @call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; @late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr - | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; @throw_element = @throw_expr | @throw_stmt; diff --git a/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/assignments.ql b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/assignments.ql new file mode 100644 index 000000000000..89e39a6e7220 --- /dev/null +++ b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/assignments.ql @@ -0,0 +1,117 @@ +class Expr extends @expr { + string toString() { none() } +} + +class Location extends @location { + string toString() { none() } +} + +class ControlFlowElement extends @control_flow_element { + string toString() { none() } +} + +class TypeOrRef extends @type_or_ref { + string toString() { none() } +} + +class Callable extends @callable { + string toString() { none() } +} + +class Accessible extends @accessible { + string toString() { none() } +} + +predicate assignmentKind(int kind) { + // | 63 = @simple_assign_expr + // | 80 = @add_event_expr + // | 81 = @remove_event_expr + // | 83 = @local_var_decl_expr + kind = [63, 80, 81, 83] +} + +predicate compoundAssignmentKind(int kind) { + // | 64 = @assign_add_expr + // | 65 = @assign_sub_expr + // | 66 = @assign_mul_expr + // | 67 = @assign_div_expr + // | 68 = @assign_rem_expr + // | 69 = @assign_and_expr + // | 70 = @assign_xor_expr + // | 71 = @assign_or_expr + // | 72 = @assign_lshift_expr + // | 73 = @assign_rshift_expr + // | 119 = @assign_coalesce_expr + // | 134 = @assign_urshift_expr + kind = [64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 119, 134] +} + +class CompoundAssignmentExpr extends Expr { + CompoundAssignmentExpr() { + exists(int kind | compoundAssignmentKind(kind) | expressions(this, kind, _)) + } +} + +predicate isAssignment(Expr ass) { + exists(int kind | assignmentKind(kind) | + expressions(ass, kind, _) and + // Exclude assignments that are part of a compound assignment. These are handled seperatly. + not exists(CompoundAssignmentExpr e | expr_parent(ass, 2, e)) + ) +} + +Expr getOperatorCall(CompoundAssignmentExpr e) { + exists(Expr assignment | + expr_parent(assignment, 2, e) and + expr_parent(result, 0, assignment) + ) +} + +query predicate new_expressions(Expr e, int kind, TypeOrRef t) { + expressions(e, kind, t) and + // Remove the unused expanded assignment expressions. + not exists(CompoundAssignmentExpr parent, Expr assignment | expr_parent(assignment, 2, parent) | + e = assignment or + expr_parent(e, 0, assignment) or + expr_parent(e, 1, assignment) + ) +} + +query predicate new_expr_parent(Expr e, int child, ControlFlowElement parent) { + if isAssignment(parent) + then + // Swap children for assignments, local variable declarations and add/remove event. + child = 0 and expr_parent(e, 1, parent) + or + child = 1 and expr_parent(e, 0, parent) + else ( + // Case for compound assignments. The parent child relation is contracted. + exists(Expr op | op = getOperatorCall(parent) | expr_parent(e, child, op)) + or + // For other expressions (as long as they are included in the new expressions + // table), the parent child relation is unchanged. + expr_parent(e, child, parent) and + new_expressions(e, _, _) and + (not parent instanceof Expr or new_expressions(parent, _, _)) + ) +} + +query predicate new_expr_location(Expr e, Location loc) { + expr_location(e, loc) and new_expressions(e, _, _) +} + +query predicate new_expr_call(Expr e, Callable c) { + exists(Expr op | op = getOperatorCall(e) | expr_call(op, c)) + or + expr_call(e, c) and not e = getOperatorCall(_) +} + +query predicate new_dynamic_member_name(Expr e, string name) { + exists(Expr op | op = getOperatorCall(e) | dynamic_member_name(op, name)) + or + dynamic_member_name(e, name) and not e = getOperatorCall(_) +} + +query predicate new_expr_access(Expr e, Accessible a) { + expr_access(e, a) and new_expressions(e, _, _) +} diff --git a/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/old.dbscheme b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/old.dbscheme new file mode 100644 index 000000000000..e73ca2c93df8 --- /dev/null +++ b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/old.dbscheme @@ -0,0 +1,1489 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..19b8cc3e2dc7 --- /dev/null +++ b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/semmlecode.csharp.dbscheme @@ -0,0 +1,1504 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/upgrade.properties b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/upgrade.properties new file mode 100644 index 000000000000..542231966edc --- /dev/null +++ b/csharp/ql/lib/upgrades/e73ca2c93df8aae162f1704edc4817a5cb330529/upgrade.properties @@ -0,0 +1,8 @@ +description: Add operation kinds for operations, cleanup expanded assignments and rotate assignment child expressions. +compatibility: partial +expr_parent.rel: run assignments.ql new_expr_parent +expressions.rel: run assignments.ql new_expressions +expr_location.rel: run assignments.ql new_expr_location +expr_call.rel: run assignments.ql new_expr_call +dynamic_member_name.rel: run assignments.ql new_dynamic_member_name +expr_access.rel: run assignments.ql new_expr_access diff --git a/csharp/ql/lib/utils/test/InlineMadTest.qll b/csharp/ql/lib/utils/test/InlineMadTest.qll index b614fda41db8..acc1df8eab38 100644 --- a/csharp/ql/lib/utils/test/InlineMadTest.qll +++ b/csharp/ql/lib/utils/test/InlineMadTest.qll @@ -1,14 +1,14 @@ -private import csharp as Cs +private import csharp as CS private import codeql.mad.test.InlineMadTest private module InlineMadTestLang implements InlineMadTestLangSig { - class Callable = Cs::Callable; + class Callable = CS::Callable; string getComment(Callable c) { - exists(Cs::CommentBlock block, Cs::Element after | after = block.getAfter() | + exists(CS::CommentBlock block, CS::Element after | after = block.getAfter() | ( after = c or - after = c.(Cs::Accessor).getDeclaration() + after = c.(CS::Accessor).getDeclaration() ) and result = block.getALine() ) diff --git a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql index 386b238e049c..c1eb996863c5 100644 --- a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +++ b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql @@ -41,9 +41,11 @@ module ConstCondInput implements ConstCond::InputSig { module ConstCondImpl = ConstCond::Make; predicate nullCheck(Expr e, boolean direct) { - exists(QualifiableExpr qe | qe.isConditional() and qe.getQualifier() = e and direct = true) + exists(QualifiableExpr qe | qe.isConditional() and direct = true | + qe.getQualifier() = e or qe.(ExtensionMethodCall).getArgument(0) = e + ) or - exists(NullCoalescingExpr nce | nce.getLeftOperand() = e and direct = true) + exists(NullCoalescingOperation nce | nce.getLeftOperand() = e and direct = true) or exists(ConditionalExpr ce | ce.getThen() = e or ce.getElse() = e | nullCheck(ce, _) and direct = false @@ -108,57 +110,14 @@ class ConstantGuard extends ConstantCondition { class ConstantBooleanCondition extends ConstantCondition { boolean b; - ConstantBooleanCondition() { isConstantCondition(this, b) } + ConstantBooleanCondition() { isConstantComparison(this, b) } override string getMessage() { result = "Condition always evaluates to '" + b + "'." } - - override predicate isWhiteListed() { - // E.g. `x ?? false` - this.(BoolLiteral) = any(NullCoalescingExpr nce).getRightOperand() or - // No need to flag logical operations when the operands are constant - isConstantCondition(this.(LogicalNotExpr).getOperand(), _) or - this = - any(LogicalAndExpr lae | - isConstantCondition(lae.getAnOperand(), false) - or - isConstantCondition(lae.getLeftOperand(), true) and - isConstantCondition(lae.getRightOperand(), true) - ) or - this = - any(LogicalOrExpr loe | - isConstantCondition(loe.getAnOperand(), true) - or - isConstantCondition(loe.getLeftOperand(), false) and - isConstantCondition(loe.getRightOperand(), false) - ) - } } -/** A constant condition in an `if` statement or a conditional expression. */ -class ConstantIfCondition extends ConstantBooleanCondition { - ConstantIfCondition() { - this = any(IfStmt is).getCondition().getAChildExpr*() or - this = any(ConditionalExpr ce).getCondition().getAChildExpr*() - } - - override predicate isWhiteListed() { - ConstantBooleanCondition.super.isWhiteListed() - or - // It is a common pattern to use a local constant/constant field to control - // whether code parts must be executed or not - this instanceof AssignableRead and - not this instanceof ParameterRead - } -} - -/** A constant loop condition. */ -class ConstantLoopCondition extends ConstantBooleanCondition { - ConstantLoopCondition() { this = any(LoopStmt ls).getCondition() } - - override predicate isWhiteListed() { - // Clearly intentional infinite loops are allowed - this.(BoolLiteral).getBoolValue() = true - } +private Expr getQualifier(QualifiableExpr e) { + // `e.getQualifier()` does not work for calls to extension methods + result = e.getChildExpr(-1) } /** A constant nullness condition. */ @@ -166,14 +125,23 @@ class ConstantNullnessCondition extends ConstantCondition { boolean b; ConstantNullnessCondition() { - forex(ControlFlow::Node cfn | cfn = this.getAControlFlowNode() | - exists(ControlFlow::NullnessSuccessor t, ControlFlow::Node s | - s = cfn.getASuccessorByType(t) - | - b = t.getValue() and - not s.isJoin() - ) and - strictcount(ControlFlow::SuccessorType t | exists(cfn.getASuccessorByType(t))) = 1 + nullCheck(this, true) and + exists(Expr stripped | stripped = this.(Expr).stripCasts() | + stripped.getType() = + any(ValueType t | + not t instanceof NullableType and + // Extractor bug: the type of `x?.Length` is reported as `int`, but it should + // be `int?` + not getQualifier*(stripped).(QualifiableExpr).isConditional() + ) and + b = false + or + stripped instanceof NullLiteral and + b = true + or + stripped.hasValue() and + not stripped instanceof NullLiteral and + b = false ) } @@ -184,39 +152,6 @@ class ConstantNullnessCondition extends ConstantCondition { } } -/** A constant matching condition. */ -class ConstantMatchingCondition extends ConstantCondition { - boolean b; - - ConstantMatchingCondition() { - this instanceof Expr and - forex(ControlFlow::Node cfn | cfn = this.getAControlFlowNode() | - exists(ControlFlow::MatchingSuccessor t | exists(cfn.getASuccessorByType(t)) | - b = t.getValue() - ) and - strictcount(ControlFlow::SuccessorType t | exists(cfn.getASuccessorByType(t))) = 1 - ) - } - - override predicate isWhiteListed() { - exists(Switch se, Case c, int i | - c = se.getCase(i) and - c.getPattern() = this.(DiscardExpr) - | - i > 0 - or - i = 0 and - exists(Expr cond | c.getCondition() = cond and not isConstantCondition(cond, true)) - ) - or - this = any(PositionalPatternExpr ppe).getPattern(_) - } - - override string getMessage() { - if b = true then result = "Pattern always matches." else result = "Pattern never matches." - } -} - from ConstantCondition c, string msg, Guards::Guards::Guard reason, string reasonMsg where msg = c.getMessage() and diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 35b5ab1e24ec..fc0f8c58d794 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,22 @@ +## 1.7.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `cs/log-forging` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `cs/web/xss` has been increased from 6.1 (medium) to 7.8 (high). + +### Major Analysis Improvements + +* The `cs/constant-condition` query has been simplified. The query no longer reports trivially constant conditions as they were found to generally be intentional. As a result, it should now produce fewer false positives. Additionally, the simplification means that it now reports all the results that `cs/constant-comparison` used to report, and as consequence, that query has been deleted. + +## 1.6.6 + +No user-facing changes. + +## 1.6.5 + +No user-facing changes. + ## 1.6.4 No user-facing changes. diff --git a/csharp/ql/src/CSI/CompareIdenticalValues.ql b/csharp/ql/src/CSI/CompareIdenticalValues.ql index 503067a8a3eb..fe79db082065 100644 --- a/csharp/ql/src/CSI/CompareIdenticalValues.ql +++ b/csharp/ql/src/CSI/CompareIdenticalValues.ql @@ -47,7 +47,6 @@ where not comparesIdenticalValuesNan(ct, _) and msg = "Comparison of identical values." ) and not isMutatingOperation(ct.getAnArgument().getAChild*()) and - not isConstantCondition(e, _) and // Avoid overlap with cs/constant-condition - not isConstantComparison(e, _) and // Avoid overlap with cs/constant-comparison + not isConstantComparison(e, _) and // Avoid overlap with cs/constant-condition not isExprInAssertion(e) select ct, msg diff --git a/csharp/ql/src/Complexity/ComplexCondition.ql b/csharp/ql/src/Complexity/ComplexCondition.ql index 0afb27e2a945..0a4d37705a37 100644 --- a/csharp/ql/src/Complexity/ComplexCondition.ql +++ b/csharp/ql/src/Complexity/ComplexCondition.ql @@ -12,19 +12,38 @@ import csharp -predicate nontrivialLogicalOperator(BinaryLogicalOperation e) { - not exists(BinaryLogicalOperation parent | +abstract class RelevantBinaryOperations extends Operation { } + +private class AddBinaryLogicalOperationRelevantBinaryOperations extends RelevantBinaryOperations, + BinaryLogicalOperation +{ } + +private class AddAssignCoalesceExprRelevantBinaryOperations extends RelevantBinaryOperations, + AssignCoalesceExpr +{ } + +abstract class RelevantOperations extends Operation { } + +private class AddLogicalOperationRelevantOperations extends RelevantOperations, LogicalOperation { } + +private class AddAssignCoalesceExprRelevantOperations extends RelevantOperations, AssignCoalesceExpr +{ } + +predicate nontrivialLogicalOperator(RelevantBinaryOperations e) { + not exists(RelevantBinaryOperations parent | parent = e.getParent() and parent.getOperator() = e.getOperator() ) } -predicate logicalParent(LogicalOperation op, LogicalOperation parent) { parent = op.getParent() } +predicate logicalParent(RelevantOperations op, RelevantOperations parent) { + parent = op.getParent() +} from Expr e, int operators where - not e.getParent() instanceof LogicalOperation and + not e.getParent() instanceof RelevantOperations and operators = - count(BinaryLogicalOperation op | logicalParent*(op, e) and nontrivialLogicalOperator(op)) and + count(RelevantBinaryOperations op | logicalParent*(op, e) and nontrivialLogicalOperator(op)) and operators > 3 select e, "Complex condition: too many logical operations in this expression." diff --git a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql index 0f6e6d11fb2c..59816a18b3fb 100644 --- a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +++ b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql @@ -84,6 +84,8 @@ class RelevantDefinition extends AssignableDefinition { ) or this instanceof AssignableDefinitions::PatternDefinition + or + this instanceof AssignableDefinitions::AssignOperationDefinition } /** Holds if this assignment may be live. */ diff --git a/csharp/ql/src/Dead Code/NonAssignedFields.ql b/csharp/ql/src/Dead Code/NonAssignedFields.ql index 83aa889b77c7..b9e868097493 100644 --- a/csharp/ql/src/Dead Code/NonAssignedFields.ql +++ b/csharp/ql/src/Dead Code/NonAssignedFields.ql @@ -84,9 +84,9 @@ where not f.getDeclaringType() instanceof Enum and not f.getType() instanceof Struct and not exists(Assignment ae, Field g | - ae.getLValue().(FieldAccess).getTarget() = g and + ae.getLeftOperand().(FieldAccess).getTarget() = g and g.getUnboundDeclaration() = f and - not ae.getRValue() instanceof NullLiteral + not ae.getRightOperand() instanceof NullLiteral ) and not exists(MethodCall mc, int i, Field g | exists(Parameter p | mc.getTarget().getParameter(i) = p | p.isOut() or p.isRef()) and @@ -101,7 +101,7 @@ where not init instanceof NullLiteral ) and not exists(AssignOperation ua, Field g | - ua.getLValue().(FieldAccess).getTarget() = g and + ua.getLeftOperand().(FieldAccess).getTarget() = g and g.getUnboundDeclaration() = f ) and not exists(MutatorOperation op | diff --git a/csharp/ql/src/Language Abuse/ForeachCapture.ql b/csharp/ql/src/Language Abuse/ForeachCapture.ql index 03f1f99a044c..2ed24b42eba9 100644 --- a/csharp/ql/src/Language Abuse/ForeachCapture.ql +++ b/csharp/ql/src/Language Abuse/ForeachCapture.ql @@ -60,16 +60,16 @@ module LambdaDataFlow { } Element getAssignmentTarget(Expr e) { - exists(Assignment a | a.getRValue() = e | - result = a.getLValue().(PropertyAccess).getTarget() or - result = a.getLValue().(FieldAccess).getTarget() or - result = a.getLValue().(LocalVariableAccess).getTarget() or - result = a.getLValue().(EventAccess).getTarget() + exists(Assignment a | a.getRightOperand() = e | + result = a.getLeftOperand().(PropertyAccess).getTarget() or + result = a.getLeftOperand().(FieldAccess).getTarget() or + result = a.getLeftOperand().(LocalVariableAccess).getTarget() or + result = a.getLeftOperand().(EventAccess).getTarget() ) or exists(AddEventExpr aee | - e = aee.getRValue() and - result = aee.getLValue().getTarget() + e = aee.getRightOperand() and + result = aee.getLeftOperand().getTarget() ) or result = getCollectionAssignmentTarget(e) @@ -97,8 +97,8 @@ Element getCollectionAssignmentTarget(Expr e) { // Store values using indexer exists(IndexerAccess ia, AssignExpr ae | ia.getQualifier() = result.(Variable).getAnAccess() and - ia = ae.getLValue() and - e = ae.getRValue() + ia = ae.getLeftOperand() and + e = ae.getRightOperand() ) } diff --git a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql index bd7492b8583e..01d6baa95732 100644 --- a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql @@ -15,7 +15,7 @@ import csharp import semmle.code.csharp.commons.StructuralComparison private Expr getAssignedExpr(Stmt stmt) { - result = stmt.stripSingletonBlocks().(ExprStmt).getExpr().(AssignExpr).getLValue() + result = stmt.stripSingletonBlocks().(ExprStmt).getExpr().(AssignExpr).getLeftOperand() } from IfStmt is, string what diff --git a/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql b/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql index 7790fc5ba4ab..0b2201570fbd 100644 --- a/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql +++ b/csharp/ql/src/Language Abuse/UselessNullCoalescingExpression.ql @@ -15,22 +15,30 @@ import csharp import semmle.code.csharp.commons.StructuralComparison +pragma[nomagic] +private predicate relevant(Expr left, Expr right) { + exists(NullCoalescingOperation nce | + left = nce.getLeftOperand() and + right = nce.getRightOperand() + ) +} + pragma[noinline] private predicate same(AssignableAccess x, AssignableAccess y) { - exists(NullCoalescingExpr nce | - x = nce.getLeftOperand() and - y = nce.getRightOperand().getAChildExpr*() - ) and - sameGvn(x, y) + exists(Expr e | + relevant(x, e) and + y = e.getAChildExpr*() and + sameGvn(x, y) + ) } -private predicate uselessNullCoalescingExpr(NullCoalescingExpr nce) { +private predicate uselessNullCoalescingOperation(NullCoalescingOperation nce) { exists(AssignableAccess x | nce.getLeftOperand() = x and forex(AssignableAccess y | same(x, y) | y instanceof AssignableRead and not y.isRefArgument()) ) } -from NullCoalescingExpr nce -where uselessNullCoalescingExpr(nce) +from NullCoalescingOperation nce +where uselessNullCoalescingOperation(nce) select nce, "Both operands of this null-coalescing expression access the same variable or property." diff --git a/csharp/ql/src/Likely Bugs/BadCheckOdd.ql b/csharp/ql/src/Likely Bugs/BadCheckOdd.ql index 34ae4b632aec..72924f9103d8 100644 --- a/csharp/ql/src/Likely Bugs/BadCheckOdd.ql +++ b/csharp/ql/src/Likely Bugs/BadCheckOdd.ql @@ -13,7 +13,7 @@ import csharp predicate isDefinitelyPositive(Expr e) { - e.getValue().toInt() >= 0 or + e.getIntValue() >= 0 or e.(PropertyAccess).getTarget().hasName("Length") or e.(MethodCall).getTarget().hasUndecoratedName("Count") } @@ -23,12 +23,12 @@ where t.getLeftOperand() = lhs and t.getRightOperand() = rhs and not isDefinitelyPositive(lhs.getLeftOperand().stripCasts()) and - lhs.getRightOperand().(IntegerLiteral).getValue() = "2" and + lhs.getRightOperand().(IntegerLiteral).getIntValue() = 2 and ( - t instanceof EQExpr and rhs.getValue() = "1" and parity = "oddness" + t instanceof EQExpr and rhs.getIntValue() = 1 and parity = "oddness" or - t instanceof NEExpr and rhs.getValue() = "1" and parity = "evenness" + t instanceof NEExpr and rhs.getIntValue() = 1 and parity = "evenness" or - t instanceof GTExpr and rhs.getValue() = "0" and parity = "oddness" + t instanceof GTExpr and rhs.getIntValue() = 0 and parity = "oddness" ) select t, "Possibly invalid test for " + parity + ". This will fail for negative numbers." diff --git a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index 5a24a1f5f519..046099213cc6 100644 --- a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -23,7 +23,10 @@ where ) and forex(Access a | a = v.getAnAccess() | a = any(ModifierMethodCall m).getQualifier() or - a = any(Assignment ass | ass.getRValue() instanceof ObjectCreation).getLValue() + a = any(AssignExpr ass | ass.getRightOperand() instanceof ObjectCreation).getLeftOperand() or + a = + any(LocalVariableDeclAndInitExpr ass | ass.getRightOperand() instanceof ObjectCreation) + .getLeftOperand() ) and not v = any(ForeachStmt fs).getVariable() and not v = any(BindingPatternExpr vpe).getVariableDeclExpr().getVariable() and diff --git a/csharp/ql/src/Likely Bugs/ConstantComparison.cs b/csharp/ql/src/Likely Bugs/ConstantComparison.cs deleted file mode 100644 index 5b0304b28189..000000000000 --- a/csharp/ql/src/Likely Bugs/ConstantComparison.cs +++ /dev/null @@ -1,2 +0,0 @@ - for (uint order = numberOfOrders; order >= 0; order--) - ProcessOrder(order); diff --git a/csharp/ql/src/Likely Bugs/ConstantComparison.qhelp b/csharp/ql/src/Likely Bugs/ConstantComparison.qhelp deleted file mode 100644 index 5e52142c84e5..000000000000 --- a/csharp/ql/src/Likely Bugs/ConstantComparison.qhelp +++ /dev/null @@ -1,46 +0,0 @@ - - - -

    - Comparisons which always yield the same result are unnecessary and may indicate a bug in the - logic. This can happen when the data type of one of the operands has a limited range of values. - For example unsigned integers are always greater than or equal to zero, and byte - values are always less than 256. -

    - -

    The following expressions always have the same result:

    -
      -
    • Unsigned < 0 is always false,
    • -
    • 0 > Unsigned is always false,
    • -
    • 0 ≤ Unsigned is always true,
    • -
    • Unsigned ≥ 0 is always true,
    • -
    • Unsigned == -1 is always false,
    • -
    • Byte < 512 is always true.
    • -
    -
    - - -

    - Examine the logic of the program to determine whether the comparison is necessary. - Either change the data types, or remove the unnecessary code. -

    -
    - - -

    The following example attempts to count down from numberOfOrders to 0, - however the loop never terminates because order is an unsigned integer and so the - condition order >= 0 is always true.

    - - - -

    The solution is to change the type of the variable order.

    -
    - - -
  • - MSDN Library: C# Operators. -
  • -
    -
    \ No newline at end of file diff --git a/csharp/ql/src/Likely Bugs/ConstantComparison.ql b/csharp/ql/src/Likely Bugs/ConstantComparison.ql deleted file mode 100644 index 983523482142..000000000000 --- a/csharp/ql/src/Likely Bugs/ConstantComparison.ql +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @name Comparison is constant - * @description The result of the comparison is always the same. - * @kind problem - * @problem.severity warning - * @precision high - * @id cs/constant-comparison - * @tags quality - * reliability - * correctness - */ - -import csharp -import semmle.code.csharp.commons.Assertions -import semmle.code.csharp.commons.Constants - -from ComparisonOperation cmp, boolean value -where - isConstantComparison(cmp, value) and - not isConstantCondition(cmp, _) and // Avoid overlap with cs/constant-condition - not isExprInAssertion(cmp) -select cmp, "This comparison is always " + value + "." diff --git a/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql b/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql index b980bfba1aea..8c77a6376d6e 100644 --- a/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql +++ b/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql @@ -23,7 +23,6 @@ class NonShortCircuit extends BinaryBitwiseOperation { or this instanceof BitwiseOrExpr ) and - not exists(AssignBitwiseOperation abo | abo.getExpandedAssignment().getRValue() = this) and this.getLeftOperand().getType() instanceof BoolType and this.getRightOperand().getType() instanceof BoolType } diff --git a/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql b/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql index c8df36bf7bf2..3e54a3a00dbd 100644 --- a/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql +++ b/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql @@ -27,8 +27,8 @@ predicate isExactEraStartDateCreation(ObjectCreation cr) { cr.getType().hasFullyQualifiedName("System", "DateTime") or cr.getType().hasFullyQualifiedName("System", "DateTimeOffset") ) and - isEraStart(cr.getArgument(0).getValue().toInt(), cr.getArgument(1).getValue().toInt(), - cr.getArgument(2).getValue().toInt()) + isEraStart(cr.getArgument(0).getIntValue(), cr.getArgument(1).getIntValue(), + cr.getArgument(2).getIntValue()) } predicate isDateFromJapaneseCalendarToDateTime(MethodCall mc) { @@ -44,7 +44,7 @@ predicate isDateFromJapaneseCalendarToDateTime(MethodCall mc) { mc.getNumberOfArguments() = 7 // implicitly current era or mc.getNumberOfArguments() = 8 and - mc.getArgument(7).getValue() = "0" + mc.getArgument(7).getIntValue() = 0 ) // explicitly current era } diff --git a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql index c66bbbeedbdd..1c41d24fb3c1 100644 --- a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +++ b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql @@ -27,21 +27,21 @@ predicate convertedToFloatOrDecimal(Expr e, Type t) { t instanceof DecimalType ) or - exists(BinaryArithmeticOperation op | + exists(BinaryOperation op | op.getAnOperand() = e and convertedToFloatOrDecimal(op, t) | - op instanceof AddExpr or - op instanceof SubExpr or - op instanceof MulExpr + op instanceof AddOperation or + op instanceof SubOperation or + op instanceof MulOperation ) } /** Holds if `div` is an exact integer division. */ predicate exactDivision(DivExpr div) { exists(int numerator, int denominator | - numerator = div.getNumerator().stripCasts().getValue().toInt() and - denominator = div.getDenominator().stripCasts().getValue().toInt() and + numerator = div.getNumerator().stripCasts().getIntValue() and + denominator = div.getDenominator().stripCasts().getIntValue() and numerator % denominator = 0 ) } diff --git a/csharp/ql/src/Likely Bugs/SelfAssignment.ql b/csharp/ql/src/Likely Bugs/SelfAssignment.ql index f01a1378242e..6e51b87a779f 100644 --- a/csharp/ql/src/Likely Bugs/SelfAssignment.ql +++ b/csharp/ql/src/Likely Bugs/SelfAssignment.ql @@ -19,7 +19,7 @@ private predicate candidate(AssignExpr ae) { not ae instanceof MemberInitializer and // Enum field initializers are never self assignments. `enum E { A = 42 }` not ae.getParent().(Field).getDeclaringType() instanceof Enum and - forall(Expr e | e = ae.getLValue().getAChildExpr*() | + forall(Expr e | e = ae.getLeftOperand().getAChildExpr*() | // Non-trivial property accesses may have side-effects, // so these are not considered e instanceof PropertyAccess implies e instanceof TrivialPropertyAccess @@ -28,7 +28,7 @@ private predicate candidate(AssignExpr ae) { private predicate selfAssignExpr(AssignExpr ae) { candidate(ae) and - sameGvn(ae.getLValue(), ae.getRValue()) + sameGvn(ae.getLeftOperand(), ae.getRightOperand()) } private Declaration getDeclaration(Expr e) { @@ -40,5 +40,5 @@ private Declaration getDeclaration(Expr e) { } from AssignExpr ae, Declaration target -where selfAssignExpr(ae) and target = getDeclaration(ae.getLValue()) +where selfAssignExpr(ae) and target = getDeclaration(ae.getLeftOperand()) select ae, "This assignment assigns $@ to itself.", target, target.getName() diff --git a/csharp/ql/src/Linq/BadMultipleIteration.ql b/csharp/ql/src/Linq/BadMultipleIteration.ql index 8146bbf167d8..0f9e335e2251 100644 --- a/csharp/ql/src/Linq/BadMultipleIteration.ql +++ b/csharp/ql/src/Linq/BadMultipleIteration.ql @@ -50,7 +50,7 @@ predicate potentiallyConsumingAccess(VariableAccess va) { Expr sequenceSource(IEnumerableSequence seq) { result = seq.getInitializer() or - exists(Assignment a | a.getLValue() = seq.getAnAccess() and result = a.getRValue()) + exists(Assignment a | a.getLeftOperand() = seq.getAnAccess() and result = a.getRightOperand()) } from IEnumerableSequence seq, VariableAccess va diff --git a/csharp/ql/src/Performance/StringConcatenationInLoop.ql b/csharp/ql/src/Performance/StringConcatenationInLoop.ql index a015771610d5..d27b99e7bdd0 100644 --- a/csharp/ql/src/Performance/StringConcatenationInLoop.ql +++ b/csharp/ql/src/Performance/StringConcatenationInLoop.ql @@ -23,9 +23,8 @@ class StringCat extends AddExpr { * where `v` is a simple variable (and not, for example, a property). */ predicate isSelfConcatAssignExpr(AssignExpr e, Variable v) { - not e = any(AssignAddExpr a).getExpandedAssignment() and exists(VariableAccess use | - stringCatContains(e.getRValue(), use) and + stringCatContains(e.getRightOperand(), use) and use.getTarget() = e.getTargetVariable() and v = use.getTarget() ) @@ -42,7 +41,7 @@ predicate stringCatContains(StringCat expr, Expr child) { * where `v` is a simple variable (and not, for example, a property). */ predicate isConcatExpr(AssignAddExpr e, Variable v) { - e.getLValue().getType() instanceof StringType and + e.getLeftOperand().getType() instanceof StringType and v = e.getTargetVariable() } diff --git a/csharp/ql/src/Security Features/CWE-079/XSS.ql b/csharp/ql/src/Security Features/CWE-079/XSS.ql index 8735d89ef500..b819ed06bf83 100644 --- a/csharp/ql/src/Security Features/CWE-079/XSS.ql +++ b/csharp/ql/src/Security Features/CWE-079/XSS.ql @@ -4,7 +4,7 @@ * allows for a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id cs/web/xss * @tags security diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql index dcc520540bb0..f72de01b5db2 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -27,8 +27,8 @@ predicate cookieAppendHttpOnlyByDefault() { predicate httpOnlyFalse(ObjectCreation oc) { exists(Assignment a | - getAValueForProp(oc, a, "HttpOnly") = a.getRValue() and - a.getRValue().getValue() = "false" + getAValueForProp(oc, a, "HttpOnly") = a.getRightOperand() and + a.getRightOperand().getValue() = "false" ) } @@ -100,8 +100,8 @@ predicate nonHttpOnlyCookieBuilderAssignment(Assignment a, Expr val) { MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions ) and pw.getProperty().getName() = "HttpOnly" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) + a.getLeftOperand() = pw and + DataFlow::localExprFlow(val, a.getRightOperand()) ) } @@ -111,7 +111,7 @@ where nonHttpOnlyCookieCall(httpOnlySink) or exists(Assignment a | - httpOnlySink = a.getRValue() and + httpOnlySink = a.getRightOperand() and nonHttpOnlyCookieBuilderAssignment(a, _) ) ) diff --git a/csharp/ql/src/Security Features/CWE-117/LogForging.ql b/csharp/ql/src/Security Features/CWE-117/LogForging.ql index 9494af335705..a922f1c02f8b 100644 --- a/csharp/ql/src/Security Features/CWE-117/LogForging.ql +++ b/csharp/ql/src/Security Features/CWE-117/LogForging.ql @@ -4,7 +4,7 @@ * insertion of forged log entries by a malicious user. * @kind path-problem * @problem.severity error - * @security-severity 7.8 + * @security-severity 6.1 * @precision high * @id cs/log-forging * @tags security diff --git a/csharp/ql/src/Security Features/CWE-119/LocalUnvalidatedArithmetic.ql b/csharp/ql/src/Security Features/CWE-119/LocalUnvalidatedArithmetic.ql index 57d6e500134a..d5efb1304aff 100644 --- a/csharp/ql/src/Security Features/CWE-119/LocalUnvalidatedArithmetic.ql +++ b/csharp/ql/src/Security Features/CWE-119/LocalUnvalidatedArithmetic.ql @@ -18,7 +18,7 @@ import csharp import semmle.code.csharp.controlflow.Guards -from AddExpr add, VirtualMethodCall taintSrc +from AddOperation add, VirtualMethodCall taintSrc where // `add` is performing pointer arithmetic add.getType() instanceof PointerType and diff --git a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql index 330ad1c1c329..a1dd249fabac 100644 --- a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql +++ b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql @@ -35,8 +35,8 @@ module InsecureSqlConnectionConfig implements DataFlow::ConfigSig { ) and not exists(MemberInitializer mi | mi = oc.getInitializer().(ObjectInitializer).getAMemberInitializer() and - mi.getLValue().(PropertyAccess).getTarget().getName() = "Encrypt" and - mi.getRValue().(BoolLiteral).getValue() = "true" + mi.getLeftOperand().(PropertyAccess).getTarget().getName() = "Encrypt" and + mi.getRightOperand().(BoolLiteral).getValue() = "true" ) ) } diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql index ce1f75d627c7..1149b4bcad24 100644 --- a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -31,8 +31,8 @@ predicate cookieAppendSecureByDefault() { predicate secureFalse(ObjectCreation oc) { exists(Assignment a | - getAValueForProp(oc, a, "Secure") = a.getRValue() and - a.getRValue().getValue() = "false" + getAValueForProp(oc, a, "Secure") = a.getRightOperand() and + a.getRightOperand().getValue() = "false" ) } @@ -96,8 +96,8 @@ predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions ) and pw.getProperty().getName() = "SecurePolicy" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) and + a.getLeftOperand() = pw and + DataFlow::localExprFlow(val, a.getRightOperand()) and val.getValue() = "2" // None ) } @@ -107,7 +107,7 @@ where insecureCookieCall(secureSink) or exists(Assignment a | - secureSink = a.getRValue() and + secureSink = a.getRightOperand() and insecureSecurePolicyAssignment(a, _) ) select secureSink, "Cookie attribute 'Secure' is not set to true." diff --git a/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql b/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql index 9c6e69351860..59a6340104a9 100644 --- a/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql +++ b/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql @@ -14,11 +14,11 @@ import csharp from Assignment a, PropertyAccess pa where - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName("Domain") and pa.getTarget().getDeclaringType().hasFullyQualifiedName("System.Web", "HttpCookie") and ( - a.getRValue().getValue().regexpReplaceAll("[^.]", "").length() < 2 or - a.getRValue().getValue().matches(".%") + a.getRightOperand().getValue().regexpReplaceAll("[^.]", "").length() < 2 or + a.getRightOperand().getValue().matches(".%") ) select a, "Overly broad domain for cookie." diff --git a/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql b/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql index 6690cac47d26..d659f7c8dc56 100644 --- a/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql +++ b/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql @@ -14,8 +14,8 @@ import csharp from Assignment a, PropertyAccess pa where - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName("Path") and pa.getTarget().getDeclaringType().hasFullyQualifiedName("System.Web", "HttpCookie") and - a.getRValue().getValue() = "/" + a.getRightOperand().getValue() = "/" select a, "Overly broad path for cookie." diff --git a/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql b/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql index 7a3a5fdc4f20..bc9bf289c2dd 100644 --- a/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql +++ b/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql @@ -17,12 +17,12 @@ from Element l where // header checking is disabled programmatically in the code exists(Assignment a, PropertyAccess pa | - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName("EnableHeaderChecking") and pa.getTarget() .getDeclaringType() .hasFullyQualifiedName("System.Web.Configuration", "HttpRuntimeSection") and - a.getRValue().getValue() = "false" and + a.getRightOperand().getValue() = "false" and a = l ) or diff --git a/csharp/ql/src/Security Features/InsecureRandomness.ql b/csharp/ql/src/Security Features/InsecureRandomness.ql index 2c2df7010c67..649969a27782 100644 --- a/csharp/ql/src/Security Features/InsecureRandomness.ql +++ b/csharp/ql/src/Security Features/InsecureRandomness.ql @@ -89,14 +89,10 @@ module Random { e = any(SensitiveLibraryParameter v).getAnAssignedArgument() or // Assignment operation, e.g. += or similar - exists(AssignOperation ao | - ao.getRValue() = e and - // "expanded" assignments will be covered by simple assignment - not ao.hasExpandedAssignment() - | - ao.getLValue() = any(SensitiveVariable v).getAnAccess() or - ao.getLValue() = any(SensitiveProperty v).getAnAccess() or - ao.getLValue() = any(SensitiveLibraryParameter v).getAnAccess() + exists(AssignOperation ao | ao.getRightOperand() = e | + ao.getLeftOperand() = any(SensitiveVariable v).getAnAccess() or + ao.getLeftOperand() = any(SensitiveProperty v).getAnAccess() or + ao.getLeftOperand() = any(SensitiveLibraryParameter v).getAnAccess() ) ) } diff --git a/csharp/ql/src/Security Features/InsufficientKeySize.ql b/csharp/ql/src/Security Features/InsufficientKeySize.ql index 94ae6b9286f2..98a7852fbaf5 100644 --- a/csharp/ql/src/Security Features/InsufficientKeySize.ql +++ b/csharp/ql/src/Security Features/InsufficientKeySize.ql @@ -20,7 +20,7 @@ predicate incorrectUseOfRC2(Assignment e, string msg) { .getDeclaringType() .hasFullyQualifiedName("System.Security.Cryptography", "RC2CryptoServiceProvider") ) and - e.getRValue().getValue().toInt() < 128 and + e.getRightOperand().getIntValue() < 128 and msg = "Key size should be at least 128 bits for RC2 encryption." } @@ -28,7 +28,7 @@ predicate incorrectUseOfDsa(ObjectCreation e, string msg) { e.getTarget() .getDeclaringType() .hasFullyQualifiedName("System.Security.Cryptography", "DSACryptoServiceProvider") and - exists(Expr i | e.getArgument(0) = i and i.getValue().toInt() < 2048) and + exists(Expr i | e.getArgument(0) = i and i.getIntValue() < 2048) and msg = "Key size should be at least 2048 bits for DSA encryption." } @@ -36,7 +36,7 @@ predicate incorrectUseOfRsa(ObjectCreation e, string msg) { e.getTarget() .getDeclaringType() .hasFullyQualifiedName("System.Security.Cryptography", "RSACryptoServiceProvider") and - exists(Expr i | e.getArgument(0) = i and i.getValue().toInt() < 2048) and + exists(Expr i | e.getArgument(0) = i and i.getIntValue() < 2048) and msg = "Key size should be at least 2048 bits for RSA encryption." } diff --git a/csharp/ql/src/Security Features/PersistentCookie.ql b/csharp/ql/src/Security Features/PersistentCookie.ql index 7f9861213fc1..edc97b464e5c 100644 --- a/csharp/ql/src/Security Features/PersistentCookie.ql +++ b/csharp/ql/src/Security Features/PersistentCookie.ql @@ -52,8 +52,8 @@ class FutureDateExpr extends MethodCall { from Assignment a, PropertyAccess pa, FutureDateExpr fde where - a.getLValue() = pa and - a.getRValue() = fde and + a.getLeftOperand() = pa and + a.getRightOperand() = fde and pa.getTarget().hasName("Expires") and pa.getTarget().getDeclaringType().hasFullyQualifiedName("System.Web", "HttpCookie") and (fde.timeIsNotClear() or fde.getTimeInSecond() > 300) // 5 minutes max diff --git a/csharp/ql/src/Telemetry/DatabaseQuality.qll b/csharp/ql/src/Telemetry/DatabaseQuality.qll index ca2ab3e7e165..ad7ac682bf5c 100644 --- a/csharp/ql/src/Telemetry/DatabaseQuality.qll +++ b/csharp/ql/src/Telemetry/DatabaseQuality.qll @@ -27,7 +27,7 @@ module CallTargetStats implements StatsSig { p = c.getProperty() and not p.getAnAccessor() instanceof Setter and assign = c.getParent() and - assign.getLValue() = c and + assign.getLeftOperand() = c and assign.getParent() instanceof Property ) } @@ -36,7 +36,7 @@ module CallTargetStats implements StatsSig { exists(Property p, AssignExpr assign | p = c.getProperty() and assign = c.getParent() and - assign.getLValue() = c and + assign.getLeftOperand() = c and assign.getParent() instanceof ObjectInitializer and assign.getParent().getParent() instanceof AnonymousObjectCreation ) @@ -46,8 +46,8 @@ module CallTargetStats implements StatsSig { exists(Property p, AssignExpr assign | p = c.getProperty() and assign = c.getParent() and - assign.getLValue() = c and - assign.getRValue() instanceof ObjectOrCollectionInitializer + assign.getLeftOperand() = c and + assign.getRightOperand() instanceof ObjectOrCollectionInitializer ) } diff --git a/csharp/ql/src/Useless code/RedundantToStringCall.ql b/csharp/ql/src/Useless code/RedundantToStringCall.ql index 55e7056e9a08..e29e071b4d9b 100644 --- a/csharp/ql/src/Useless code/RedundantToStringCall.ql +++ b/csharp/ql/src/Useless code/RedundantToStringCall.ql @@ -18,5 +18,6 @@ import semmle.code.csharp.frameworks.System from MethodCall mc where mc instanceof ImplicitToStringExpr and - mc.getTarget() instanceof ToStringMethod -select mc, "Redundant call to 'ToString' on a String object." + mc.getTarget() instanceof ToStringMethod and + not mc.getQualifier() instanceof BaseAccess +select mc, "Redundant call to 'ToString'." diff --git a/csharp/ql/src/change-notes/2026-04-17-useless-to-string.md b/csharp/ql/src/change-notes/2026-04-17-useless-to-string.md new file mode 100644 index 000000000000..9b4c81378c91 --- /dev/null +++ b/csharp/ql/src/change-notes/2026-04-17-useless-to-string.md @@ -0,0 +1,7 @@ +--- +category: minorAnalysis +--- +* The query `cs/useless-tostring-call` has been updated to avoid false + positive results in calls to `StringBuilder.AppendLine` and calls of + the form `base.ToString()`. Moreover, the alert message has been + made more precise. diff --git a/csharp/ql/src/change-notes/released/1.6.5.md b/csharp/ql/src/change-notes/released/1.6.5.md new file mode 100644 index 000000000000..44f1ca6de3e7 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.6.5.md @@ -0,0 +1,3 @@ +## 1.6.5 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/1.6.6.md b/csharp/ql/src/change-notes/released/1.6.6.md new file mode 100644 index 000000000000..14281d9101b9 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.6.6.md @@ -0,0 +1,3 @@ +## 1.6.6 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/1.7.0.md b/csharp/ql/src/change-notes/released/1.7.0.md new file mode 100644 index 000000000000..906a13d68d0a --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.7.0.md @@ -0,0 +1,10 @@ +## 1.7.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `cs/log-forging` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `cs/web/xss` has been increased from 6.1 (medium) to 7.8 (high). + +### Major Analysis Improvements + +* The `cs/constant-condition` query has been simplified. The query no longer reports trivially constant conditions as they were found to generally be intentional. As a result, it should now produce fewer false positives. Additionally, the simplification means that it now reports all the results that `cs/constant-comparison` used to report, and as consequence, that query has been deleted. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 1910e09d6a6a..d1184cc67507 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.4 +lastReleaseVersion: 1.7.0 diff --git a/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls b/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls index 21d39db383d3..9700c8b03410 100644 --- a/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls +++ b/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls @@ -22,7 +22,6 @@ - cs/comparison-of-identical-expressions - cs/complex-block - cs/complex-condition - - cs/constant-comparison - cs/constant-condition - cs/coupled-types - cs/dereferenced-value-is-always-null diff --git a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll index 84ea534a50fa..12af7fd7d333 100644 --- a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll +++ b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll @@ -211,7 +211,7 @@ module RequestForgery { } private predicate stringConcatStep(DataFlow::Node prev, DataFlow::Node succ) { - exists(AddExpr a | + exists(AddOperation a | a.getLeftOperand() = prev.asExpr() or a.getRightOperand() = prev.asExpr() and diff --git a/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql b/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql index f175723c0997..0dc8fc362d61 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql @@ -174,7 +174,7 @@ module HashWithoutSaltConfig implements DataFlow::ConfigSig { mc.getAnArgument() = node.asExpr() ) or - exists(AddExpr e | node.asExpr() = e.getAnOperand()) // password+salt + exists(AddOperation e | node.asExpr() = e.getAnOperand()) // password+salt or exists(InterpolatedStringExpr e | node.asExpr() = e.getAnInsert()) or @@ -187,10 +187,10 @@ module HashWithoutSaltConfig implements DataFlow::ConfigSig { or // a salt or key is included in subclasses of `KeyedHashAlgorithm` exists(MethodCall mc, Assignment a, ObjectCreation oc | - a.getRValue() = oc and + a.getRightOperand() = oc and oc.getObjectType().getABaseType+() instanceof KeyedHashAlgorithm and mc.getTarget() instanceof HashMethod and - a.getLValue() = mc.getQualifier().(VariableAccess).getTarget().getAnAccess() and + a.getLeftOperand() = mc.getQualifier().(VariableAccess).getTarget().getAnAccess() and mc.getArgument(0) = node.asExpr() ) } diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 314f157005ea..9ea341d1b38d 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.6.4 +version: 1.7.1-dev groups: - csharp - queries diff --git a/csharp/ql/test/library-tests/arguments/argumentByName.expected b/csharp/ql/test/library-tests/arguments/argumentByName.expected index 6fcb9021d17d..065d70703120 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByName.expected +++ b/csharp/ql/test/library-tests/arguments/argumentByName.expected @@ -33,14 +33,16 @@ | arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:21:59:21 | 3 | a | | arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:24:59:24 | 4 | b | | arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:34:59:34 | 6 | value | -| arguments.cs:61:9:61:12 | access to property Prop | arguments.cs:61:9:61:17 | ... + ... | value | +| arguments.cs:61:9:61:12 | access to property Prop | arguments.cs:61:9:61:17 | ... += ... | value | +| arguments.cs:61:9:61:17 | ... += ... | arguments.cs:61:9:61:12 | access to property Prop | left | +| arguments.cs:61:9:61:17 | ... += ... | arguments.cs:61:17:61:17 | 7 | right | | arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:14:62:14 | 8 | a | | arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:17:62:17 | 9 | b | -| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:9:63:26 | ... + ... | value | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:9:63:26 | ... += ... | value | | arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | a | -| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | a | -| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | b | | arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | b | +| arguments.cs:63:9:63:26 | ... += ... | arguments.cs:63:9:63:20 | access to indexer | left | +| arguments.cs:63:9:63:26 | ... += ... | arguments.cs:63:25:63:26 | 12 | right | | arguments.cs:65:16:65:27 | access to indexer | arguments.cs:65:21:65:22 | 15 | a | | arguments.cs:65:16:65:27 | access to indexer | arguments.cs:65:25:65:26 | 16 | b | | arguments.cs:76:9:76:31 | call to method f8`1 | arguments.cs:76:12:76:12 | 0 | o | diff --git a/csharp/ql/test/library-tests/arguments/argumentByParameter.expected b/csharp/ql/test/library-tests/arguments/argumentByParameter.expected index ac354d31e28e..c04658592532 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByParameter.expected +++ b/csharp/ql/test/library-tests/arguments/argumentByParameter.expected @@ -33,12 +33,12 @@ | arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:21:59:21 | 3 | arguments.cs:53:18:53:18 | a | | arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:24:59:24 | 4 | arguments.cs:53:25:53:25 | b | | arguments.cs:59:16:59:25 | access to indexer | arguments.cs:59:34:59:34 | 6 | arguments.cs:53:44:53:46 | value | -| arguments.cs:61:9:61:12 | access to property Prop | arguments.cs:61:9:61:17 | ... + ... | arguments.cs:51:21:51:23 | value | +| arguments.cs:61:9:61:12 | access to property Prop | arguments.cs:61:9:61:17 | ... += ... | arguments.cs:51:21:51:23 | value | | arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:14:62:14 | 8 | arguments.cs:53:18:53:18 | a | | arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:14:62:14 | 8 | arguments.cs:53:18:53:18 | a | | arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:17:62:17 | 9 | arguments.cs:53:25:53:25 | b | | arguments.cs:62:9:62:18 | access to indexer | arguments.cs:62:17:62:17 | 9 | arguments.cs:53:25:53:25 | b | -| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:9:63:26 | ... + ... | arguments.cs:53:44:53:46 | value | +| arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:9:63:26 | ... += ... | arguments.cs:53:44:53:46 | value | | arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | arguments.cs:53:18:53:18 | a | | arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:14:63:15 | 10 | arguments.cs:53:18:53:18 | a | | arguments.cs:63:9:63:20 | access to indexer | arguments.cs:63:18:63:19 | 11 | arguments.cs:53:25:53:25 | b | diff --git a/csharp/ql/test/library-tests/arguments/argumentType.expected b/csharp/ql/test/library-tests/arguments/argumentType.expected index 0dac70193453..fa148e657b44 100644 --- a/csharp/ql/test/library-tests/arguments/argumentType.expected +++ b/csharp/ql/test/library-tests/arguments/argumentType.expected @@ -36,8 +36,6 @@ | arguments.cs:62:14:62:14 | 8 | 0 | | arguments.cs:62:17:62:17 | 9 | 0 | | arguments.cs:63:14:63:15 | 10 | 0 | -| arguments.cs:63:14:63:15 | 10 | 0 | -| arguments.cs:63:18:63:19 | 11 | 0 | | arguments.cs:63:18:63:19 | 11 | 0 | | arguments.cs:64:22:64:23 | 13 | 0 | | arguments.cs:64:26:64:27 | 14 | 0 | diff --git a/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected b/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected index 6f25b07e2e5a..9f830954efb8 100644 --- a/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected +++ b/csharp/ql/test/library-tests/arguments/parameterGetArguments.expected @@ -28,7 +28,7 @@ | arguments.cs:51:21:51:23 | value | arguments.cs:57:16:57:16 | 0 | | arguments.cs:51:21:51:23 | value | arguments.cs:58:16:58:25 | access to indexer | | arguments.cs:51:21:51:23 | value | arguments.cs:59:31:59:31 | 5 | -| arguments.cs:51:21:51:23 | value | arguments.cs:61:9:61:17 | ... + ... | +| arguments.cs:51:21:51:23 | value | arguments.cs:61:9:61:17 | ... += ... | | arguments.cs:53:18:53:18 | a | arguments.cs:58:21:58:21 | 1 | | arguments.cs:53:18:53:18 | a | arguments.cs:59:21:59:21 | 3 | | arguments.cs:53:18:53:18 | a | arguments.cs:62:14:62:14 | 8 | @@ -44,7 +44,7 @@ | arguments.cs:53:25:53:25 | b | arguments.cs:63:18:63:19 | 11 | | arguments.cs:53:25:53:25 | b | arguments.cs:65:25:65:26 | 16 | | arguments.cs:53:44:53:46 | value | arguments.cs:59:34:59:34 | 6 | -| arguments.cs:53:44:53:46 | value | arguments.cs:63:9:63:26 | ... + ... | +| arguments.cs:53:44:53:46 | value | arguments.cs:63:9:63:26 | ... += ... | | arguments.cs:74:20:74:20 | o | arguments.cs:76:12:76:12 | 0 | | arguments.cs:74:20:74:20 | o | arguments.cs:77:12:77:12 | 0 | | arguments.cs:74:20:74:20 | o | arguments.cs:78:12:78:12 | 0 | diff --git a/csharp/ql/test/library-tests/assignments/AssignOperation.ql b/csharp/ql/test/library-tests/assignments/AssignOperation.ql index 2ca3b11a8313..2fa23ed0a9f3 100644 --- a/csharp/ql/test/library-tests/assignments/AssignOperation.ql +++ b/csharp/ql/test/library-tests/assignments/AssignOperation.ql @@ -1,4 +1,4 @@ import csharp from AssignOperation ao -select ao, ao.getLValue(), ao.getRValue() +select ao, ao.getLeftOperand(), ao.getRightOperand() diff --git a/csharp/ql/test/library-tests/assignments/AssignOperationExpanded.expected b/csharp/ql/test/library-tests/assignments/AssignOperationExpanded.expected deleted file mode 100644 index bcc9d11c42f5..000000000000 --- a/csharp/ql/test/library-tests/assignments/AssignOperationExpanded.expected +++ /dev/null @@ -1,3 +0,0 @@ -| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:14:6:14 | 1 | -| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:14:9:14 | 2 | -| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:14:12:17 | this access | diff --git a/csharp/ql/test/library-tests/assignments/AssignOperationExpanded.ql b/csharp/ql/test/library-tests/assignments/AssignOperationExpanded.ql deleted file mode 100644 index bd67776520fb..000000000000 --- a/csharp/ql/test/library-tests/assignments/AssignOperationExpanded.ql +++ /dev/null @@ -1,22 +0,0 @@ -import csharp - -predicate getExpandedOperatorArgs(Expr e, Expr left, Expr right) { - e = - any(BinaryArithmeticOperation bo | - bo.getLeftOperand() = left and - bo.getRightOperand() = right - ) - or - e = - any(OperatorCall oc | - oc.getArgument(0) = left and - oc.getArgument(1) = right - ) -} - -from AssignOperation ao, AssignExpr ae, Expr op, Expr left, Expr right -where - ae = ao.getExpandedAssignment() and - op = ae.getRValue() and - getExpandedOperatorArgs(op, left, right) -select ao, ae, ae.getLValue(), op, left, right diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index 30f2b1051551..9802f2b01955 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -7,11 +7,11 @@ | AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | exit M2 | 42 | | AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | exit M3 | 17 | | AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | exit M4 | 20 | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | exit M5 | 34 | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | exit M6 | 43 | +| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | exit M5 | 24 | +| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | exit M6 | 30 | | AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | exit M7 | 25 | | AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | exit M8 | 31 | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | exit M9 | 58 | +| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | exit M9 | 51 | | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | 7 | | ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | exit M1 | 5 | | ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | exit M2 | 6 | @@ -164,7 +164,7 @@ | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | 1 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | 2 | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | exit Assignments | 7 | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 34 | +| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 31 | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... | 4 | | Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | exit + | 6 | | Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | exit SetParamSingle | 7 | @@ -250,7 +250,6 @@ | ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | exit get_Item | 6 | | ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | exit set_Item | 4 | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | 4 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 | 2 | | ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:12:48:25 | ... = ... | 3 | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | 2 | | ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:12:49:32 | ... = ... | 3 | @@ -262,14 +261,11 @@ | ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | 1 | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | 2 | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:18:52:38 | ... = ... | 3 | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | 1 | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | 1 | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... = ... | 4 | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 1 | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 4 | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | 1 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... = ... | 4 | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | exit M9 | 4 | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | 8 | | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | exit Conditions | 7 | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:5:13:5:15 | access to parameter inc | 4 | @@ -331,12 +327,12 @@ | Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:19 | ...++ | 3 | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | exit M7 | 4 | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:105:13:105:13 | access to parameter b | 8 | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... = ... | 5 | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... += ... | 4 | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | 5 | | Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | 2 | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | 1 | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | 1 | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... = ... | 5 | +| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... += ... | 4 | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | exit M8 | 4 | | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:18:116:22 | Int32 i = ... | 8 | | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 | 2 | @@ -533,7 +529,7 @@ | Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | call to method WriteLine | 3 | | Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:46 | call to method WriteLine | 4 | | Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | exit M12 (normal) | 4 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:272:13:272:18 | ... = ... | 16 | +| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:272:13:272:18 | ... += ... | 15 | | Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | 1 | | Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | 1 | | Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | 1 | @@ -1130,7 +1126,7 @@ | cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | 5 | | cflow.cs:208:10:208:11 | enter Do | cflow.cs:210:9:221:36 | do ... while (...); | 3 | | cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do | 2 | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 15 | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 12 | | cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | continue; | 2 | | cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:32 | ... < ... | 6 | | cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | break; | 2 | @@ -1138,7 +1134,7 @@ | cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:226:27:226:64 | call to method Repeat | 5 | | cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach | 2 | | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | 1 | -| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | ... > ... | 16 | +| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | ... > ... | 13 | | cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | continue; | 2 | | cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:32 | ... < ... | 6 | | cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | 2 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected index 3ef1d481abe8..cda25b6abd12 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected @@ -100,14 +100,8 @@ conditionBlock | ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | false | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | false | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | false | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | false | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | false | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | false | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | false | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | false | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | false | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | false | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | false | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | false | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | ...; | true | | Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [false] !... | true | | Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | false | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index 204092c6df23..072d874d8d4f 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -129,77 +129,54 @@ dominance | AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:43:5:47:5 | {...} | | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:42:10:42:11 | exit M5 | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:44:9:44:33 | ...; | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... = ... | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | -| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:9:44:18 | access to field Field | -| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:45:9:45:31 | ...; | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:45:9:45:31 | ...; | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:12 | this access | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:32 | access to field Field | -| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... + ... | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | +| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... += ... | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:17 | access to property Prop | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... = ... | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | -| AccessorCalls.cs:45:9:45:30 | ... + ... | AccessorCalls.cs:45:9:45:17 | access to property Prop | -| AccessorCalls.cs:45:9:45:30 | ... = ... | AccessorCalls.cs:46:9:46:27 | ...; | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:46:9:46:27 | ...; | | AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:12 | this access | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:30 | access to property Prop | -| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... + ... | +| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... += ... | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... = ... | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:20:46:23 | this access | -| AccessorCalls.cs:46:9:46:26 | ... + ... | AccessorCalls.cs:46:9:46:15 | access to indexer | -| AccessorCalls.cs:46:9:46:26 | ... = ... | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | | AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:12 | this access | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:12 | this access | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:15 | access to indexer | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:25:46:25 | 0 | -| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... + ... | +| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... += ... | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:20:46:26 | access to indexer | | AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:50:5:54:5 | {...} | | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:49:10:49:11 | exit M6 | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:51:9:51:37 | ...; | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... = ... | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:25:51:28 | this access | -| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:9:51:20 | access to field Field | -| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:52:9:52:35 | ...; | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:52:9:52:35 | ...; | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:30 | access to field x | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:36 | access to field Field | -| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... + ... | +| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... += ... | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:19 | access to property Prop | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... = ... | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:24:52:27 | this access | -| AccessorCalls.cs:52:9:52:34 | ... + ... | AccessorCalls.cs:52:9:52:19 | access to property Prop | -| AccessorCalls.cs:52:9:52:34 | ... = ... | AccessorCalls.cs:53:9:53:31 | ...; | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:53:9:53:31 | ...; | | AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:29 | access to field x | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:34 | access to property Prop | -| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... + ... | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | access to field x | +| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... += ... | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | access to field x | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:16:53:16 | 0 | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:16:53:16 | 0 | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... = ... | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access | -| AccessorCalls.cs:53:9:53:30 | ... + ... | AccessorCalls.cs:53:9:53:17 | access to indexer | -| AccessorCalls.cs:53:9:53:30 | ... = ... | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | | AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:12 | this access | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:17 | access to indexer | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:27 | access to field x | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:29:53:29 | 0 | -| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... + ... | +| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... += ... | | AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:22:53:30 | access to indexer | | AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:57:5:59:5 | {...} | | AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | AccessorCalls.cs:56:10:56:11 | exit M7 | @@ -271,25 +248,18 @@ dominance | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:71:9:71:26 | ...; | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:9 | access to local variable d | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:25 | ... = ... | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:25:71:25 | access to parameter e | -| AccessorCalls.cs:71:9:71:25 | ... = ... | AccessorCalls.cs:72:9:72:21 | ...; | -| AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:72:9:72:21 | ...; | | AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:9 | access to local variable d | -| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | +| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:25 | ... += ... | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... = ... | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | -| AccessorCalls.cs:72:9:72:20 | ... = ... | AccessorCalls.cs:73:9:73:84 | ...; | -| AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | AccessorCalls.cs:72:9:72:12 | dynamic access to element | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:73:9:73:84 | ...; | | AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:9 | access to local variable d | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:9 | access to local variable d | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:12 | dynamic access to element | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:19:72:19 | 1 | -| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | +| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... += ... | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:17:72:20 | dynamic access to element | | AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:49:73:49 | access to local variable d | | AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | @@ -732,27 +702,24 @@ dominance | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:6:9:6:15 | ...; | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:13:5:17 | Int32 x = ... | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:14:6:14 | 1 | -| Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:6:9:6:14 | ... = ... | -| Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:8:9:8:22 | ... ...; | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:8:9:8:22 | ... ...; | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:9 | access to local variable x | -| Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:14 | ... + ... | +| Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:14 | ... += ... | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:21:8:21 | 0 | | Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:9:9:9:15 | ...; | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | (...) ... | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:17:8:21 | dynamic d = ... | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:14:9:14 | 2 | -| Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:11:9:11:34 | ... ...; | -| Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:9:9:9:14 | ... = ... | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:11:9:11:34 | ... ...; | | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:9 | access to local variable d | -| Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:14 | dynamic call to operator - | +| Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:14 | ... -= ... | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:17:11:33 | object creation of type Assignments | | Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:12:9:12:18 | ...; | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:13:11:33 | Assignments a = ... | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:14:12:17 | this access | -| Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:14:9:14:36 | ...; | -| Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:12:9:12:17 | ... = ... | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:14:9:14:36 | ...; | | Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:9 | access to local variable a | -| Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:17 | call to operator + | +| Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:17 | ... += ... | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:35 | ... += ... | | Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:18:14:35 | (...) => ... | | Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:3:10:3:10 | exit M (normal) | @@ -1058,22 +1025,16 @@ dominance | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:18:52:38 | ... = ... | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:12:53:25 | ... = ... | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... - ... | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | +| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:54:9:54:30 | ...; | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... -= ... | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:12:54:29 | ... = ... | | ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... + ... | +| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... += ... | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:75:60:78 | ", " | @@ -1295,9 +1256,8 @@ dominance | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:18:106:19 | "" | -| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:13:106:19 | ... = ... | | Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:13 | access to local variable x | -| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... + ... | +| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... += ... | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:13 | access to local variable x | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | access to property Length | | Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:24:107:24 | 0 | @@ -1309,9 +1269,8 @@ dominance | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:22:109:23 | "" | -| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:23 | ... = ... | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:17 | access to local variable x | -| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... + ... | +| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... += ... | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | exit M8 (normal) | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; | | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:114:5:124:5 | {...} | @@ -1939,11 +1898,10 @@ dominance | Finally.cs:271:13:271:35 | ...; | Finally.cs:271:31:271:33 | "3" | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | call to method WriteLine | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:18:272:18 | 3 | -| Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:13:272:18 | ... = ... | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (normal) | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (normal) | | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | -| Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... + ... | +| Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... += ... | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to constructor Object | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | this access | @@ -3819,14 +3777,11 @@ dominance | cflow.cs:209:5:222:5 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:211:9:221:9 | {...} | | cflow.cs:211:9:221:9 | {...} | cflow.cs:212:13:212:25 | ...; | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:24 | ... = ... | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:22:212:24 | "a" | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | access to field Field | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:13:212:17 | access to field Field | -| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:213:13:216:13 | if (...) ... | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:213:13:216:13 | if (...) ... | | cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... + ... | +| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... += ... | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:21 | this access | | cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:28 | access to property Length | | cflow.cs:213:17:213:21 | this access | cflow.cs:213:17:213:21 | access to field Field | @@ -3856,14 +3811,11 @@ dominance | cflow.cs:226:57:226:59 | "a" | cflow.cs:226:62:226:63 | 10 | | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:27:226:64 | call to method Repeat | | cflow.cs:227:9:237:9 | {...} | cflow.cs:228:13:228:23 | ...; | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:22 | ... = ... | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:22:228:22 | access to local variable x | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | access to field Field | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:13:228:17 | access to field Field | -| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:229:13:232:13 | if (...) ... | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:229:13:232:13 | if (...) ... | | cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... + ... | +| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... += ... | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:21 | this access | | cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:28 | access to property Length | | cflow.cs:229:17:229:21 | this access | cflow.cs:229:17:229:21 | access to field Field | @@ -4138,75 +4090,52 @@ postDominance | AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:38:9:38:21 | ...++ | | AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:9:39:14 | access to field x | | AccessorCalls.cs:42:10:42:11 | exit M5 | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | -| AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:46:9:46:26 | ... = ... | +| AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:46:9:46:26 | ... += ... | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:42:10:42:11 | enter M5 | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:33 | ...; | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:12 | this access | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... + ... | -| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:23:44:32 | access to field Field | -| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:44:9:44:18 | access to field Field | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:23:44:32 | access to field Field | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:43:5:47:5 | {...} | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | | AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:31 | ...; | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... + ... | -| AccessorCalls.cs:45:9:45:30 | ... + ... | AccessorCalls.cs:45:22:45:30 | access to property Prop | -| AccessorCalls.cs:45:9:45:30 | ... = ... | AccessorCalls.cs:45:9:45:17 | access to property Prop | -| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:44:9:44:32 | ... = ... | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:22:45:30 | access to property Prop | +| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:44:9:44:32 | ... += ... | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:9:45:17 | access to property Prop | | AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:27 | ...; | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... + ... | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:9:46:26 | ... + ... | AccessorCalls.cs:46:20:46:26 | access to indexer | -| AccessorCalls.cs:46:9:46:26 | ... = ... | AccessorCalls.cs:46:9:46:15 | access to indexer | -| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:45:9:45:30 | ... = ... | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:12 | this access | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:20:46:26 | access to indexer | +| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:45:9:45:30 | ... += ... | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:12 | this access | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:9:46:15 | access to indexer | | AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:25:46:25 | 0 | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:20:46:23 | this access | | AccessorCalls.cs:49:10:49:11 | exit M6 | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | -| AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:53:9:53:30 | ... = ... | +| AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:53:9:53:30 | ... += ... | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:49:10:49:11 | enter M6 | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:37 | ...; | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:14 | access to field x | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... + ... | -| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:25:51:36 | access to field Field | -| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:51:9:51:20 | access to field Field | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:25:51:36 | access to field Field | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:50:5:54:5 | {...} | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:9:51:20 | access to field Field | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:28 | this access | | AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:30 | access to field x | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:35 | ...; | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:14 | access to field x | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... + ... | -| AccessorCalls.cs:52:9:52:34 | ... + ... | AccessorCalls.cs:52:24:52:34 | access to property Prop | -| AccessorCalls.cs:52:9:52:34 | ... = ... | AccessorCalls.cs:52:9:52:19 | access to property Prop | -| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:51:9:51:36 | ... = ... | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:24:52:34 | access to property Prop | +| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:51:9:51:36 | ... += ... | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:9:52:19 | access to property Prop | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:27 | this access | | AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:29 | access to field x | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:31 | ...; | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:16:53:16 | 0 | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... + ... | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:16:53:16 | 0 | -| AccessorCalls.cs:53:9:53:30 | ... + ... | AccessorCalls.cs:53:22:53:30 | access to indexer | -| AccessorCalls.cs:53:9:53:30 | ... = ... | AccessorCalls.cs:53:9:53:17 | access to indexer | -| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:52:9:52:34 | ... = ... | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:14 | access to field x | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:22:53:30 | access to indexer | +| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:52:9:52:34 | ... += ... | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:14 | access to field x | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:9:53:17 | access to indexer | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:25 | this access | @@ -4282,29 +4211,22 @@ postDominance | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:9 | access to local variable d | | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:69:9:69:35 | ... = ... | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:26 | ...; | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | -| AccessorCalls.cs:71:9:71:25 | ... = ... | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | -| AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | AccessorCalls.cs:71:25:71:25 | access to parameter e | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:25:71:25 | access to parameter e | | AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:21 | ...; | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:11:72:11 | 0 | -| AccessorCalls.cs:72:9:72:20 | ... = ... | AccessorCalls.cs:72:9:72:12 | dynamic access to element | -| AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | AccessorCalls.cs:72:17:72:20 | dynamic access to element | -| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:71:9:71:25 | ... = ... | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:9 | access to local variable d | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:17:72:20 | dynamic access to element | +| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:71:9:71:25 | ... += ... | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:9 | access to local variable d | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:9:72:12 | dynamic access to element | | AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:19:72:19 | 1 | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:17:72:17 | access to local variable d | | AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:35:73:43 | (..., ...) | | AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:73:39:73:42 | dynamic access to element | -| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:72:9:72:20 | ... = ... | +| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:72:9:72:20 | ... += ... | | AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:9:73:84 | ...; | | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:48:73:83 | (..., ...) | | AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:10:73:10 | access to local variable d | @@ -4730,31 +4652,28 @@ postDominance | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:17:5:17 | 0 | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:9:5:18 | ... ...; | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:15 | ...; | -| Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:6:14:6:14 | 1 | -| Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:6:9:6:14 | ... + ... | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:14:6:14 | 1 | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:5:13:5:17 | Int32 x = ... | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:9 | access to local variable x | -| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:6:9:6:14 | ... = ... | +| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:6:9:6:14 | ... += ... | | Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:21:8:21 | (...) ... | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:9:8:22 | ... ...; | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | 0 | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:15 | ...; | -| Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:9:9:9:14 | dynamic call to operator - | -| Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:9:14:9:14 | 2 | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:14:9:14 | 2 | | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:8:17:8:21 | dynamic d = ... | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:9 | access to local variable d | -| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:9:9:9:14 | ... = ... | +| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:9:9:9:14 | ... -= ... | | Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:17:11:33 | object creation of type Assignments | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:9:11:34 | ... ...; | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:18 | ...; | -| Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:12:9:12:17 | call to operator + | -| Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:12:14:12:17 | this access | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:14:12:17 | this access | | Assignments.cs:12:9:12:18 | ...; | Assignments.cs:11:13:11:33 | Assignments a = ... | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:9 | access to local variable a | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:18:14:35 | (...) => ... | | Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:36 | ...; | | Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:13 | access to event Event | -| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:12:9:12:17 | ... = ... | +| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:12:9:12:17 | ... += ... | | Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:13 | this access | | Assignments.cs:14:18:14:35 | exit (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | | Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | Assignments.cs:14:33:14:35 | {...} | @@ -5022,8 +4941,7 @@ postDominance | ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:13:43:15 | {...} | | ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | enter set_Item | | ConditionalAccess.cs:46:10:46:11 | exit M9 | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:12:54:29 | ... = ... | +| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:12:54:29 | ... += ... | | ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:46:10:46:11 | enter M9 | | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:26 | ...; | | ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:24:48:25 | 42 | @@ -5052,20 +4970,15 @@ postDominance | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:18:51:31 | ... = ... | | ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:12:53:25 | ... - ... | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:18:52:38 | ... = ... | -| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:9:53:20 | access to field IntField | +| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:25:53:25 | 1 | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:12:54:29 | ... + ... | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:12:53:25 | ... = ... | -| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | +| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:12:53:25 | ... -= ... | +| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | @@ -5287,25 +5200,23 @@ postDominance | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:104:13:104:28 | String x = ... | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:9:106:20 | if (...) ... | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:18:106:19 | "" | -| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:106:13:106:19 | ... + ... | +| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:18:106:19 | "" | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:13 | access to local variable x | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:106:13:106:19 | ... = ... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:106:13:106:19 | ... += ... | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:9:109:24 | if (...) ... | | Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:13 | access to local variable x | | Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:24:107:24 | 0 | | Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:20 | access to property Length | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:13:109:24 | if (...) ... | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:22:109:23 | "" | -| Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:109:17:109:23 | ... + ... | +| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:22:109:23 | "" | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:17 | access to local variable x | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:13:107:24 | ... > ... | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:23 | ... = ... | +| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:23 | ... += ... | | Conditions.cs:113:10:113:11 | exit M9 | Conditions.cs:113:10:113:11 | exit M9 (normal) | | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:116:25:116:39 | ... < ... | | Conditions.cs:114:5:124:5 | {...} | Conditions.cs:113:10:113:11 | enter M9 | @@ -5890,7 +5801,7 @@ postDominance | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:27:260:32 | "Done" | | Finally.cs:260:9:260:34 | ...; | Finally.cs:258:13:258:46 | call to method WriteLine | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:272:13:272:18 | ... = ... | +| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:272:13:272:18 | ... += ... | | Finally.cs:264:5:274:5 | {...} | Finally.cs:263:10:263:12 | enter M13 | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:264:5:274:5 | {...} | | Finally.cs:266:9:268:9 | {...} | Finally.cs:265:9:273:9 | try {...} ... | @@ -5902,8 +5813,7 @@ postDominance | Finally.cs:271:13:271:35 | ...; | Finally.cs:270:9:273:9 | {...} | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:35 | ...; | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:19 | ...; | -| Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:18:272:18 | 3 | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:272:13:272:18 | ... + ... | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:18:272:18 | 3 | | Finally.cs:272:13:272:19 | ...; | Finally.cs:271:13:271:34 | call to method WriteLine | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:13 | access to parameter i | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to method | @@ -7720,14 +7630,11 @@ postDominance | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:209:5:222:5 | {...} | | cflow.cs:211:9:221:9 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:24 | ... + ... | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:25 | ...; | -| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:22:212:24 | "a" | -| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:212:13:212:17 | access to field Field | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:22:212:24 | "a" | | cflow.cs:212:13:212:25 | ...; | cflow.cs:211:9:221:9 | {...} | | cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:17 | access to field Field | -| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:212:13:212:24 | ... = ... | +| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:212:13:212:24 | ... += ... | | cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:21 | this access | | cflow.cs:213:17:213:21 | this access | cflow.cs:213:13:216:13 | if (...) ... | | cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:17:213:21 | access to field Field | @@ -7756,14 +7663,11 @@ postDominance | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:57:226:59 | "a" | | cflow.cs:227:9:237:9 | {...} | cflow.cs:226:22:226:22 | String x | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:22 | ... + ... | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:23 | ...; | -| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:22:228:22 | access to local variable x | -| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:228:13:228:17 | access to field Field | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:22:228:22 | access to local variable x | | cflow.cs:228:13:228:23 | ...; | cflow.cs:227:9:237:9 | {...} | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:17 | access to field Field | -| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:228:13:228:22 | ... = ... | +| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:228:13:228:22 | ... += ... | | cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:21 | this access | | cflow.cs:229:17:229:21 | this access | cflow.cs:229:13:232:13 | if (...) ... | | cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:17:229:21 | access to field Field | @@ -9077,7 +8981,6 @@ blockDominance | ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | enter get_Item | | ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | enter set_Item | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:24:48:25 | 42 | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:49:9:49:33 | ...; | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:49:26:49:32 | "Hello" | @@ -9089,17 +8992,12 @@ blockDominance | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | @@ -9110,16 +9008,12 @@ blockDominance | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | @@ -9128,71 +9022,47 @@ blockDominance | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:13:50:13 | 0 | | ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | | ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:30:51:31 | 84 | | ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:25:53:25 | 1 | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:27:54:29 | "!" | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | enter Conditions | @@ -13005,27 +12875,6 @@ postBlockDominance | ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | enter get_Item | | ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | enter set_Item | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | @@ -13058,7 +12907,6 @@ postBlockDominance | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | @@ -13073,29 +12921,37 @@ postBlockDominance | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | enter M9 | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:48:24:48:25 | 42 | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:49:9:49:33 | ...; | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:49:26:49:32 | "Hello" | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:50:9:50:24 | ...; | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:50:13:50:13 | 0 | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:51:9:51:16 | access to property Prop | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:51:9:51:32 | ...; | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:51:30:51:31 | 84 | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:52:9:52:16 | access to property Prop | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:52:9:52:39 | ...; | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:52:32:52:38 | "World" | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:20 | access to field IntField | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:26 | ...; | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | enter M9 | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:48:24:48:25 | 42 | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:49:9:49:33 | ...; | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:49:26:49:32 | "Hello" | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:50:9:50:24 | ...; | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:50:13:50:13 | 0 | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:51:9:51:16 | access to property Prop | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:51:9:51:32 | ...; | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:51:30:51:31 | 84 | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:52:9:52:16 | access to property Prop | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:52:9:52:39 | ...; | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:52:32:52:38 | "World" | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:53:9:53:20 | access to field IntField | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:53:9:53:26 | ...; | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:53:25:53:25 | 1 | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index 8f48cd46fc3b..99f8c25b49e2 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -140,32 +140,22 @@ nodeEnclosing | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:45:9:45:30 | ... + ... | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:45:9:45:30 | ... = ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:46:9:46:26 | ... + ... | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:46:9:46:26 | ... = ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:42:10:42:11 | M5 | @@ -174,40 +164,27 @@ nodeEnclosing | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:52:9:52:34 | ... + ... | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:52:9:52:34 | ... = ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:53:9:53:30 | ... + ... | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:53:9:53:30 | ... = ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | @@ -286,22 +263,15 @@ nodeEnclosing | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:71:9:71:25 | ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:72:9:72:20 | ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:66:10:66:11 | M9 | @@ -803,8 +773,7 @@ nodeEnclosing | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:3:10:3:10 | M | @@ -812,16 +781,14 @@ nodeEnclosing | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:9:12:18 | ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:3:10:3:10 | M | @@ -1165,20 +1132,14 @@ nodeEnclosing | ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | @@ -1412,8 +1373,7 @@ nodeEnclosing | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:13:106:20 | ...; | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | @@ -1426,8 +1386,7 @@ nodeEnclosing | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | M8 | @@ -2131,8 +2090,7 @@ nodeEnclosing | Finally.cs:271:13:271:35 | ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:31:271:33 | "3" | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:13:272:18 | ... + ... | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:19 | ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:18:272:18 | 3 | Finally.cs:263:10:263:12 | M13 | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | Foreach | @@ -4204,11 +4162,8 @@ nodeEnclosing | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:208:10:208:11 | Do | | cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:208:10:208:11 | Do | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:208:10:208:11 | Do | -| cflow.cs:212:13:212:17 | this access | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:17 | this access | cflow.cs:208:10:208:11 | Do | -| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:208:10:208:11 | Do | -| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:25 | ...; | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:22:212:24 | "a" | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:208:10:208:11 | Do | @@ -4243,11 +4198,8 @@ nodeEnclosing | cflow.cs:226:62:226:63 | 10 | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:227:9:237:9 | {...} | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:228:13:228:17 | this access | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:17 | this access | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:23 | ...; | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:224:10:224:16 | Foreach | @@ -4666,7 +4618,6 @@ blockEnclosing | ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item | | ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item | | ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:46:10:46:11 | M9 | @@ -4678,13 +4629,10 @@ blockEnclosing | ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected index 410916afabdf..248562dbc833 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected @@ -109,77 +109,48 @@ | AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:16:39:16 | 0 | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:43:5:47:5 | {...} | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:12 | this access | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:12 | this access | -| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:9:44:12 | this access | | AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:9:44:12 | this access | -| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:44:9:44:12 | this access | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:33 | ...; | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:26 | this access | | AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | -| AccessorCalls.cs:45:9:45:30 | ... + ... | AccessorCalls.cs:45:9:45:12 | this access | | AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:9:45:12 | this access | -| AccessorCalls.cs:45:9:45:30 | ... = ... | AccessorCalls.cs:45:9:45:12 | this access | | AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:31 | ...; | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:25 | this access | | AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:12 | this access | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:12 | this access | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:12 | this access | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:12 | this access | -| AccessorCalls.cs:46:9:46:26 | ... + ... | AccessorCalls.cs:46:9:46:12 | this access | | AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:9:46:12 | this access | -| AccessorCalls.cs:46:9:46:26 | ... = ... | AccessorCalls.cs:46:9:46:12 | this access | | AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:27 | ...; | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:14:46:14 | 0 | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:20:46:23 | this access | | AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:20:46:23 | this access | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:25:46:25 | 0 | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:50:5:54:5 | {...} | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:51:9:51:12 | this access | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:37 | ...; | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:28 | this access | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:28 | this access | | AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:28 | this access | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:34 | ... + ... | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:34 | ... = ... | AccessorCalls.cs:52:9:52:12 | this access | | AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:35 | ...; | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:27 | this access | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:27 | this access | | AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:27 | this access | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:12 | this access | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:12 | this access | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:30 | ... + ... | AccessorCalls.cs:53:9:53:12 | this access | | AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:9:53:12 | this access | -| AccessorCalls.cs:53:9:53:30 | ... = ... | AccessorCalls.cs:53:9:53:12 | this access | | AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:31 | ...; | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:16:53:16 | 0 | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:16:53:16 | 0 | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:25 | this access | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:25 | this access | | AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access | @@ -249,24 +220,15 @@ | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:9 | access to local variable d | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:22 | ...; | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | | AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:9:71:9 | access to local variable d | -| AccessorCalls.cs:71:9:71:25 | ... = ... | AccessorCalls.cs:71:9:71:9 | access to local variable d | -| AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | AccessorCalls.cs:71:9:71:9 | access to local variable d | | AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:26 | ...; | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:25:71:25 | access to parameter e | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:9 | access to local variable d | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:9 | access to local variable d | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:9 | access to local variable d | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:9 | access to local variable d | | AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:9:72:9 | access to local variable d | -| AccessorCalls.cs:72:9:72:20 | ... = ... | AccessorCalls.cs:72:9:72:9 | access to local variable d | -| AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | AccessorCalls.cs:72:9:72:9 | access to local variable d | | AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:21 | ...; | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:11:72:11 | 0 | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:11:72:11 | 0 | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:17:72:17 | access to local variable d | | AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:19:72:19 | 1 | @@ -689,9 +651,7 @@ | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:17:5:17 | 0 | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:17:5:17 | 0 | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:9 | access to local variable x | -| Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:6:9:6:9 | access to local variable x | | Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:9 | access to local variable x | -| Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:6:9:6:9 | access to local variable x | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:15 | ...; | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:14:6:14 | 1 | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:9:8:22 | ... ...; | @@ -700,8 +660,6 @@ | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | 0 | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:9 | access to local variable d | | Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:9 | access to local variable d | -| Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:9:9:9:9 | access to local variable d | -| Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:9:9:9:9 | access to local variable d | | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:15 | ...; | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:14:9:14 | 2 | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:9:11:34 | ... ...; | @@ -709,8 +667,6 @@ | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:9 | access to local variable a | | Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:9 | access to local variable a | -| Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:12:9:12:9 | access to local variable a | -| Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:12:9:12:9 | access to local variable a | | Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:18 | ...; | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:14:12:17 | this access | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:13 | this access | @@ -966,22 +922,14 @@ | ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | @@ -1180,9 +1128,7 @@ | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:9:106:20 | if (...) ... | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | access to parameter b | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:13 | access to local variable x | -| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:13:106:13 | access to local variable x | | Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:13:106:13 | access to local variable x | -| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:106:13:106:13 | access to local variable x | | Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:20 | ...; | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:18:106:19 | "" | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | @@ -1194,9 +1140,7 @@ | Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:18:108:18 | access to parameter b | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:17 | access to local variable x | -| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:17 | access to local variable x | | Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:17 | access to local variable x | -| Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:109:17:109:17 | access to local variable x | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:24 | ...; | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x | @@ -1776,9 +1720,7 @@ | Finally.cs:271:13:271:35 | ...; | Finally.cs:271:13:271:35 | ...; | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:31:271:33 | "3" | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:13 | access to parameter i | -| Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:13:272:13 | access to parameter i | | Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:13:272:13 | access to parameter i | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:272:13:272:13 | access to parameter i | | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:19 | ...; | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:18:272:18 | 3 | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | @@ -3417,12 +3359,8 @@ | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:210:9:221:36 | do ... while (...); | | cflow.cs:211:9:221:9 | {...} | cflow.cs:211:9:221:9 | {...} | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | this access | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:13:212:17 | this access | | cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:212:13:212:17 | this access | | cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:25 | ...; | | cflow.cs:212:22:212:24 | "a" | cflow.cs:212:22:212:24 | "a" | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:13:216:13 | if (...) ... | @@ -3454,12 +3392,8 @@ | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:62:226:63 | 10 | | cflow.cs:227:9:237:9 | {...} | cflow.cs:227:9:237:9 | {...} | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:13:228:17 | this access | | cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:228:13:228:17 | this access | | cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:23 | ...; | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:22:228:22 | access to local variable x | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:13:232:13 | if (...) ... | diff --git a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected index a6794112ebda..602dd8c2a528 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected @@ -107,78 +107,49 @@ | AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:39:9:39:19 | ...++ | normal | | AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:39:9:39:19 | ...++ | normal | | AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:16:39:16 | 0 | normal | -| AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:46:9:46:26 | ... = ... | normal | +| AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:46:9:46:26 | ... += ... | normal | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | normal | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | normal | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:12 | this access | normal | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:18 | access to field Field | normal | -| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:9:44:32 | ... + ... | normal | -| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:9:44:32 | ... = ... | normal | -| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:44:9:44:32 | ... = ... | normal | -| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:32 | ... = ... | normal | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:9:44:32 | ... += ... | normal | +| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:32 | ... += ... | normal | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:26 | this access | normal | | AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:32 | access to field Field | normal | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | normal | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | normal | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | normal | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:17 | access to property Prop | normal | -| AccessorCalls.cs:45:9:45:30 | ... + ... | AccessorCalls.cs:45:9:45:30 | ... + ... | normal | -| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:9:45:30 | ... = ... | normal | -| AccessorCalls.cs:45:9:45:30 | ... = ... | AccessorCalls.cs:45:9:45:30 | ... = ... | normal | -| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:30 | ... = ... | normal | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:9:45:30 | ... += ... | normal | +| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:30 | ... += ... | normal | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:25 | this access | normal | | AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:30 | access to property Prop | normal | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:12 | this access | normal | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:12 | this access | normal | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:15 | access to indexer | normal | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:14:46:14 | 0 | normal | -| AccessorCalls.cs:46:9:46:26 | ... + ... | AccessorCalls.cs:46:9:46:26 | ... + ... | normal | -| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:9:46:26 | ... = ... | normal | -| AccessorCalls.cs:46:9:46:26 | ... = ... | AccessorCalls.cs:46:9:46:26 | ... = ... | normal | -| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:26 | ... = ... | normal | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:14:46:14 | 0 | normal | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:9:46:26 | ... += ... | normal | +| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:26 | ... += ... | normal | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:14:46:14 | 0 | normal | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:20:46:23 | this access | normal | | AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:20:46:26 | access to indexer | normal | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:25:46:25 | 0 | normal | -| AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:53:9:53:30 | ... = ... | normal | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:12 | this access | normal | +| AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:53:9:53:30 | ... += ... | normal | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:12 | this access | normal | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:14 | access to field x | normal | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:14 | access to field x | normal | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:14 | access to field x | normal | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:20 | access to field Field | normal | -| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:9:51:36 | ... + ... | normal | -| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:9:51:36 | ... = ... | normal | -| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:51:9:51:36 | ... = ... | normal | -| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:36 | ... = ... | normal | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:9:51:36 | ... += ... | normal | +| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:36 | ... += ... | normal | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:28 | this access | normal | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:30 | access to field x | normal | | AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:36 | access to field Field | normal | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:12 | this access | normal | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:12 | this access | normal | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:14 | access to field x | normal | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:14 | access to field x | normal | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:14 | access to field x | normal | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:19 | access to property Prop | normal | -| AccessorCalls.cs:52:9:52:34 | ... + ... | AccessorCalls.cs:52:9:52:34 | ... + ... | normal | -| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:9:52:34 | ... = ... | normal | -| AccessorCalls.cs:52:9:52:34 | ... = ... | AccessorCalls.cs:52:9:52:34 | ... = ... | normal | -| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:34 | ... = ... | normal | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:9:52:34 | ... += ... | normal | +| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:34 | ... += ... | normal | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:27 | this access | normal | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:29 | access to field x | normal | | AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:34 | access to property Prop | normal | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:12 | this access | normal | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:12 | this access | normal | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:14 | access to field x | normal | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:14 | access to field x | normal | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:17 | access to indexer | normal | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:16:53:16 | 0 | normal | -| AccessorCalls.cs:53:9:53:30 | ... + ... | AccessorCalls.cs:53:9:53:30 | ... + ... | normal | -| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:9:53:30 | ... = ... | normal | -| AccessorCalls.cs:53:9:53:30 | ... = ... | AccessorCalls.cs:53:9:53:30 | ... = ... | normal | -| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:30 | ... = ... | normal | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:16:53:16 | 0 | normal | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:9:53:30 | ... += ... | normal | +| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:30 | ... += ... | normal | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:16:53:16 | 0 | normal | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:25 | this access | normal | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:27 | access to field x | normal | @@ -249,23 +220,14 @@ | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | normal | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | normal | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | normal | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | normal | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | normal | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | normal | -| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:9:71:25 | ... = ... | normal | -| AccessorCalls.cs:71:9:71:25 | ... = ... | AccessorCalls.cs:71:9:71:25 | ... = ... | normal | -| AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | normal | -| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:25 | ... = ... | normal | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:9:71:25 | ... += ... | normal | +| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:25 | ... += ... | normal | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:25:71:25 | access to parameter e | normal | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:9 | access to local variable d | normal | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:9 | access to local variable d | normal | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:12 | dynamic access to element | normal | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:11:72:11 | 0 | normal | -| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:9:72:20 | ... = ... | normal | -| AccessorCalls.cs:72:9:72:20 | ... = ... | AccessorCalls.cs:72:9:72:20 | ... = ... | normal | -| AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | normal | -| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:20 | ... = ... | normal | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:11:72:11 | 0 | normal | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:9:72:20 | ... += ... | normal | +| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:20 | ... += ... | normal | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:11:72:11 | 0 | normal | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:17:72:17 | access to local variable d | normal | | AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:17:72:20 | dynamic access to element | normal | @@ -788,29 +750,23 @@ | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:13:5:17 | Int32 x = ... | normal | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:17:5:17 | 0 | normal | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:9 | access to local variable x | normal | -| Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:6:9:6:14 | ... + ... | normal | -| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:14 | ... = ... | normal | -| Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:6:9:6:14 | ... = ... | normal | -| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:14 | ... = ... | normal | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:14 | ... += ... | normal | +| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:14 | ... += ... | normal | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:14:6:14 | 1 | normal | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:17:8:21 | dynamic d = ... | normal | | Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:17:8:21 | dynamic d = ... | normal | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | 0 | normal | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | (...) ... | normal | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:9 | access to local variable d | normal | -| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:14 | ... = ... | normal | -| Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:9:9:9:14 | ... = ... | normal | -| Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:9:9:9:14 | dynamic call to operator - | normal | -| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:14 | ... = ... | normal | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:14 | ... -= ... | normal | +| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:14 | ... -= ... | normal | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:14:9:14 | 2 | normal | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:13:11:33 | Assignments a = ... | normal | | Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:13:11:33 | Assignments a = ... | normal | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | normal | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:9 | access to local variable a | normal | -| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:17 | ... = ... | normal | -| Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:12:9:12:17 | ... = ... | normal | -| Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:12:9:12:17 | call to operator + | normal | -| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:17 | ... = ... | normal | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:17 | ... += ... | normal | +| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:17 | ... += ... | normal | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:14:12:17 | this access | normal | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:13 | this access | normal | | Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:13 | this access | normal | @@ -1120,8 +1076,7 @@ | ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:15:42:26 | return ...; | return | | ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:22:42:25 | null | normal | | ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:13:43:15 | {...} | normal | -| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal | +| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:54:12:54:29 | ... += ... | normal | | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | non-null | | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null | | ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | non-null | @@ -1181,36 +1136,18 @@ | ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:18:52:38 | ... = ... | normal | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | normal | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | normal | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:12:53:25 | ... = ... | normal | -| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:12:53:25 | ... - ... | normal | -| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | -| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:12:53:25 | ... = ... | normal | -| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | -| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:53:12:53:25 | ... = ... | normal | +| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:12:53:25 | ... -= ... | normal | +| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:12:53:25 | ... -= ... | normal | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | normal | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | normal | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal | -| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:12:54:29 | ... + ... | normal | -| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal | -| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:54:12:54:29 | ... = ... | normal | +| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:12:54:29 | ... += ... | normal | +| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:12:54:29 | ... += ... | normal | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | normal | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | normal | | ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:78 | ... + ... | normal | @@ -1458,34 +1395,30 @@ | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:17 | access to parameter b | normal | | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:28 | call to method ToString | normal | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | false | -| Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:106:13:106:19 | ... = ... | normal | +| Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:106:13:106:19 | ... += ... | normal | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | access to parameter b | false | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | access to parameter b | true | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:13 | access to local variable x | normal | -| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:13:106:19 | ... + ... | normal | -| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:13:106:19 | ... = ... | normal | -| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:106:13:106:19 | ... = ... | normal | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... = ... | normal | +| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:13:106:19 | ... += ... | normal | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... += ... | normal | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:18:106:19 | "" | normal | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | false | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | !... | false | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:23 | ... = ... | normal | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:23 | ... += ... | normal | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:13 | access to local variable x | normal | | Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:20 | access to property Length | normal | | Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | ... > ... | false | | Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | ... > ... | true | | Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:24:107:24 | 0 | normal | | Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | !... | false | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:23 | ... = ... | normal | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:23 | ... += ... | normal | | Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:17:108:18 | !... | false | | Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:17:108:18 | !... | true | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b | false | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b | true | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:17 | access to local variable x | normal | -| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:23 | ... + ... | normal | -| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:23 | ... = ... | normal | -| Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:109:17:109:23 | ... = ... | normal | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... = ... | normal | +| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:23 | ... += ... | normal | +| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... += ... | normal | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" | normal | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:9:110:17 | return ...; | return | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x | normal | @@ -2405,10 +2338,10 @@ | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:9:260:33 | call to method WriteLine | normal | | Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:33 | call to method WriteLine | normal | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:27:260:32 | "Done" | normal | -| Finally.cs:264:5:274:5 | {...} | Finally.cs:272:13:272:18 | ... = ... | normal | -| Finally.cs:264:5:274:5 | {...} | Finally.cs:272:13:272:18 | ... = ... | throw(Exception) [normal] (0) | -| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:272:13:272:18 | ... = ... | normal | -| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:272:13:272:18 | ... = ... | throw(Exception) [normal] (0) | +| Finally.cs:264:5:274:5 | {...} | Finally.cs:272:13:272:18 | ... += ... | normal | +| Finally.cs:264:5:274:5 | {...} | Finally.cs:272:13:272:18 | ... += ... | throw(Exception) [normal] (0) | +| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:272:13:272:18 | ... += ... | normal | +| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:272:13:272:18 | ... += ... | throw(Exception) [normal] (0) | | Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:34 | call to method WriteLine | normal | | Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:34 | call to method WriteLine | throw(Exception) | | Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:267:13:267:34 | call to method WriteLine | normal | @@ -2416,15 +2349,13 @@ | Finally.cs:267:13:267:35 | ...; | Finally.cs:267:13:267:34 | call to method WriteLine | normal | | Finally.cs:267:13:267:35 | ...; | Finally.cs:267:13:267:34 | call to method WriteLine | throw(Exception) | | Finally.cs:267:31:267:33 | "1" | Finally.cs:267:31:267:33 | "1" | normal | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:272:13:272:18 | ... = ... | normal | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:272:13:272:18 | ... += ... | normal | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:271:13:271:34 | call to method WriteLine | normal | | Finally.cs:271:13:271:35 | ...; | Finally.cs:271:13:271:34 | call to method WriteLine | normal | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:31:271:33 | "3" | normal | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:13 | access to parameter i | normal | -| Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:13:272:18 | ... + ... | normal | -| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:13:272:18 | ... = ... | normal | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:272:13:272:18 | ... = ... | normal | -| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:18 | ... = ... | normal | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:13:272:18 | ... += ... | normal | +| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:18 | ... += ... | normal | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:18:272:18 | 3 | normal | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | normal | | Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to method | normal | @@ -4403,13 +4334,9 @@ | cflow.cs:211:9:221:9 | {...} | cflow.cs:217:17:217:32 | ... < ... | false | | cflow.cs:211:9:221:9 | {...} | cflow.cs:219:17:219:22 | break; | break | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | access to field Field | normal | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | this access | normal | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | normal | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | normal | -| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:13:212:24 | ... + ... | normal | -| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:13:212:24 | ... = ... | normal | -| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:212:13:212:24 | ... = ... | normal | -| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:24 | ... = ... | normal | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:13:212:24 | ... += ... | normal | +| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:24 | ... += ... | normal | | cflow.cs:212:22:212:24 | "a" | cflow.cs:212:22:212:24 | "a" | normal | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:32 | ... > ... | false | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:215:17:215:25 | continue; | continue | @@ -4449,13 +4376,9 @@ | cflow.cs:227:9:237:9 | {...} | cflow.cs:233:17:233:32 | ... < ... | false | | cflow.cs:227:9:237:9 | {...} | cflow.cs:235:17:235:22 | break; | break | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | access to field Field | normal | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | this access | normal | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | normal | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | normal | -| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:13:228:22 | ... + ... | normal | -| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:13:228:22 | ... = ... | normal | -| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:228:13:228:22 | ... = ... | normal | -| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:22 | ... = ... | normal | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:13:228:22 | ... += ... | normal | +| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:22 | ... += ... | normal | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:22:228:22 | access to local variable x | normal | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:32 | ... > ... | false | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:231:17:231:25 | continue; | continue | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index 4ce98d5096ff..544bc1bd776c 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -128,77 +128,54 @@ | AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:43:5:47:5 | {...} | | | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:42:10:42:11 | exit M5 | | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:44:9:44:33 | ...; | | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... = ... | | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | | -| AccessorCalls.cs:44:9:44:32 | ... + ... | AccessorCalls.cs:44:9:44:18 | access to field Field | | -| AccessorCalls.cs:44:9:44:32 | ... = ... | AccessorCalls.cs:45:9:45:31 | ...; | | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:45:9:45:31 | ...; | | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:12 | this access | | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:32 | access to field Field | | -| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... + ... | | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | | +| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... += ... | | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:17 | access to property Prop | | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... = ... | | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | | -| AccessorCalls.cs:45:9:45:30 | ... + ... | AccessorCalls.cs:45:9:45:17 | access to property Prop | | -| AccessorCalls.cs:45:9:45:30 | ... = ... | AccessorCalls.cs:46:9:46:27 | ...; | | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:46:9:46:27 | ...; | | | AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:12 | this access | | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:30 | access to property Prop | | -| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... + ... | | +| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... += ... | | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... = ... | | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:20:46:23 | this access | | -| AccessorCalls.cs:46:9:46:26 | ... + ... | AccessorCalls.cs:46:9:46:15 | access to indexer | | -| AccessorCalls.cs:46:9:46:26 | ... = ... | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | | | AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:12 | this access | | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:12 | this access | | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:15 | access to indexer | | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:25:46:25 | 0 | | -| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... + ... | | +| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... += ... | | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:20:46:26 | access to indexer | | | AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:50:5:54:5 | {...} | | | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:49:10:49:11 | exit M6 | | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:51:9:51:37 | ...; | | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... = ... | | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:25:51:28 | this access | | -| AccessorCalls.cs:51:9:51:36 | ... + ... | AccessorCalls.cs:51:9:51:20 | access to field Field | | -| AccessorCalls.cs:51:9:51:36 | ... = ... | AccessorCalls.cs:52:9:52:35 | ...; | | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:52:9:52:35 | ...; | | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:12 | this access | | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:30 | access to field x | | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:36 | access to field Field | | -| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... + ... | | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | | +| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... += ... | | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:19 | access to property Prop | | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... = ... | | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:24:52:27 | this access | | -| AccessorCalls.cs:52:9:52:34 | ... + ... | AccessorCalls.cs:52:9:52:19 | access to property Prop | | -| AccessorCalls.cs:52:9:52:34 | ... = ... | AccessorCalls.cs:53:9:53:31 | ...; | | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:53:9:53:31 | ...; | | | AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:12 | this access | | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:29 | access to field x | | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:34 | access to property Prop | | -| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... + ... | | +| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... += ... | | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | access to field x | | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | access to field x | | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:16:53:16 | 0 | | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:16:53:16 | 0 | | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... = ... | | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access | | -| AccessorCalls.cs:53:9:53:30 | ... + ... | AccessorCalls.cs:53:9:53:17 | access to indexer | | -| AccessorCalls.cs:53:9:53:30 | ... = ... | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | | | AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:12 | this access | | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:12 | this access | | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:17 | access to indexer | | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:27 | access to field x | | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:29:53:29 | 0 | | -| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... + ... | | +| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... += ... | | | AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:22:53:30 | access to indexer | | | AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:57:5:59:5 | {...} | | | AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | AccessorCalls.cs:56:10:56:11 | exit M7 | | @@ -270,25 +247,18 @@ | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | | | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:71:9:71:26 | ...; | | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:9 | access to local variable d | | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:25 | ... = ... | | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:25:71:25 | access to parameter e | | -| AccessorCalls.cs:71:9:71:25 | ... = ... | AccessorCalls.cs:72:9:72:21 | ...; | | -| AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:72:9:72:21 | ...; | | | AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:9 | access to local variable d | | -| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:25 | dynamic call to operator + | | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | | +| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:25 | ... += ... | | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... = ... | | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | | -| AccessorCalls.cs:72:9:72:20 | ... = ... | AccessorCalls.cs:73:9:73:84 | ...; | | -| AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | AccessorCalls.cs:72:9:72:12 | dynamic access to element | | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:73:9:73:84 | ...; | | | AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:9 | access to local variable d | | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:9 | access to local variable d | | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:12 | dynamic access to element | | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:19:72:19 | 1 | | -| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | dynamic call to operator + | | +| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... += ... | | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:17:72:20 | dynamic access to element | | | AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:49:73:49 | access to local variable d | | | AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | | @@ -819,27 +789,24 @@ | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:6:9:6:15 | ...; | | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:13:5:17 | Int32 x = ... | | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:14:6:14 | 1 | | -| Assignments.cs:6:9:6:14 | ... + ... | Assignments.cs:6:9:6:14 | ... = ... | | -| Assignments.cs:6:9:6:14 | ... = ... | Assignments.cs:8:9:8:22 | ... ...; | | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:8:9:8:22 | ... ...; | | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:9 | access to local variable x | | -| Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:14 | ... + ... | | +| Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:14 | ... += ... | | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:21:8:21 | 0 | | | Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:9:9:9:15 | ...; | | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | (...) ... | | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:17:8:21 | dynamic d = ... | | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:14:9:14 | 2 | | -| Assignments.cs:9:9:9:14 | ... = ... | Assignments.cs:11:9:11:34 | ... ...; | | -| Assignments.cs:9:9:9:14 | dynamic call to operator - | Assignments.cs:9:9:9:14 | ... = ... | | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:11:9:11:34 | ... ...; | | | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:9 | access to local variable d | | -| Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:14 | dynamic call to operator - | | +| Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:14 | ... -= ... | | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:17:11:33 | object creation of type Assignments | | | Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:12:9:12:18 | ...; | | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:13:11:33 | Assignments a = ... | | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:14:12:17 | this access | | -| Assignments.cs:12:9:12:17 | ... = ... | Assignments.cs:14:9:14:36 | ...; | | -| Assignments.cs:12:9:12:17 | call to operator + | Assignments.cs:12:9:12:17 | ... = ... | | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:14:9:14:36 | ...; | | | Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:9 | access to local variable a | | -| Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:17 | call to operator + | | +| Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:17 | ... += ... | | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:35 | ... += ... | | | Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:18:14:35 | (...) => ... | | | Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:3:10:3:10 | exit M (normal) | | @@ -1187,26 +1154,18 @@ | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | | | ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:53:9:53:26 | ...; | | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | non-null | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:25:53:25 | 1 | null | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:30 | ...; | null | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:12:53:25 | ... = ... | | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:25:53:25 | 1 | | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | -| ConditionalAccess.cs:53:12:53:25 | ... - ... | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | -| ConditionalAccess.cs:53:12:53:25 | ... = ... | ConditionalAccess.cs:54:9:54:30 | ...; | | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... - ... | | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | null | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null | +| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:54:9:54:30 | ...; | | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... -= ... | | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | non-null | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:27:54:29 | "!" | null | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:12:54:29 | ... = ... | | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:27:54:29 | "!" | | | ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | -| ConditionalAccess.cs:54:12:54:29 | ... + ... | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | | -| ConditionalAccess.cs:54:12:54:29 | ... = ... | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... + ... | | +| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... += ... | | | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:75:60:78 | ", " | | @@ -1453,10 +1412,9 @@ | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | true | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | false | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:18:106:19 | "" | | -| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:13:106:19 | ... = ... | | -| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:107:9:109:24 | if (...) ... | | +| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:107:9:109:24 | if (...) ... | | | Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:13 | access to local variable x | | -| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... + ... | | +| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... += ... | | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:13 | access to local variable x | | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | access to property Length | | | Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:24:107:24 | 0 | | @@ -1469,10 +1427,9 @@ | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:22:109:23 | "" | | -| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:23 | ... = ... | | -| Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:110:16:110:16 | access to local variable x | | +| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:110:16:110:16 | access to local variable x | | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:17 | access to local variable x | | -| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... + ... | | +| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... += ... | | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | exit M8 (normal) | return | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; | | | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:114:5:124:5 | {...} | | @@ -2205,11 +2162,10 @@ | Finally.cs:271:13:271:35 | ...; | Finally.cs:271:31:271:33 | "3" | | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | call to method WriteLine | | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:18:272:18 | 3 | | -| Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:13:272:18 | ... = ... | | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | exception | -| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (normal) | | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | exception | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (normal) | | | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | | -| Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... + ... | | +| Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... += ... | | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | | Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to constructor Object | | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | this access | | @@ -4305,14 +4261,11 @@ | cflow.cs:209:5:222:5 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | | | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:211:9:221:9 | {...} | | | cflow.cs:211:9:221:9 | {...} | cflow.cs:212:13:212:25 | ...; | | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:24 | ... = ... | | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:22:212:24 | "a" | | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | access to field Field | | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | | -| cflow.cs:212:13:212:24 | ... + ... | cflow.cs:212:13:212:17 | access to field Field | | -| cflow.cs:212:13:212:24 | ... = ... | cflow.cs:213:13:216:13 | if (...) ... | | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:213:13:216:13 | if (...) ... | | | cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:17 | this access | | -| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... + ... | | +| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... += ... | | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:21 | this access | | | cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:28 | access to property Length | | | cflow.cs:213:17:213:21 | this access | cflow.cs:213:17:213:21 | access to field Field | | @@ -4347,14 +4300,11 @@ | cflow.cs:226:57:226:59 | "a" | cflow.cs:226:62:226:63 | 10 | | | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:27:226:64 | call to method Repeat | | | cflow.cs:227:9:237:9 | {...} | cflow.cs:228:13:228:23 | ...; | | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:22 | ... = ... | | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:22:228:22 | access to local variable x | | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | access to field Field | | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | | -| cflow.cs:228:13:228:22 | ... + ... | cflow.cs:228:13:228:17 | access to field Field | | -| cflow.cs:228:13:228:22 | ... = ... | cflow.cs:229:13:232:13 | if (...) ... | | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:229:13:232:13 | if (...) ... | | | cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:17 | this access | | -| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... + ... | | +| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... += ... | | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:21 | this access | | | cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:28 | access to property Length | | | cflow.cs:229:17:229:21 | this access | cflow.cs:229:17:229:21 | access to field Field | | diff --git a/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql b/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql index 69e7db8c1cf1..450ed9940a8c 100644 --- a/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql +++ b/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql @@ -1,5 +1,5 @@ import csharp from Assignment a -select a.getLocation(), a.getLValue().getType().toString(), a.getRValue().getType().toString(), - a.getRValue().toString() +select a.getLocation(), a.getLeftOperand().getType().toString(), + a.getRightOperand().getType().toString(), a.getRightOperand().toString() diff --git a/csharp/ql/test/library-tests/csharp10/lambda.ql b/csharp/ql/test/library-tests/csharp10/lambda.ql index 3cfec302b525..55c7faac0495 100644 --- a/csharp/ql/test/library-tests/csharp10/lambda.ql +++ b/csharp/ql/test/library-tests/csharp10/lambda.ql @@ -3,7 +3,7 @@ import csharp private predicate getLambda( LocalVariableDeclAndInitExpr e, string type, LocalVariable v, LambdaExpr lexp ) { - lexp = e.getRValue() and + lexp = e.getRightOperand() and v = e.getTargetVariable() and type = e.getType().toStringWithTypes() } diff --git a/csharp/ql/test/library-tests/csharp11/PrintAst.expected b/csharp/ql/test/library-tests/csharp11/PrintAst.expected index 391c41540ece..cf501daa763c 100644 --- a/csharp/ql/test/library-tests/csharp11/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp11/PrintAst.expected @@ -614,7 +614,7 @@ Operators.cs: # 12| 1: [UnaryMinusExpr] -... # 12| 0: [IntLiteral] 4 # 13| 5: [ExprStmt] ...; -# 13| 0: [AssignUnsighedRightShiftExpr] ... >>>= ... +# 13| 0: [AssignUnsignedRightShiftExpr] ... >>>= ... # 13| 0: [LocalVariableAccess] access to local variable z # 13| 1: [IntLiteral] 5 # 17| [Class] MyOperatorClass diff --git a/csharp/ql/test/library-tests/csharp11/operators.expected b/csharp/ql/test/library-tests/csharp11/operators.expected index 2c7bda6800d2..177019a3ea0c 100644 --- a/csharp/ql/test/library-tests/csharp11/operators.expected +++ b/csharp/ql/test/library-tests/csharp11/operators.expected @@ -1,8 +1,7 @@ binarybitwise | Operators.cs:7:18:7:25 | ... >>> ... | Operators.cs:7:18:7:19 | access to local variable x1 | Operators.cs:7:25:7:25 | 2 | >>> | UnsignedRightShiftExpr | | Operators.cs:10:18:10:25 | ... >>> ... | Operators.cs:10:18:10:19 | access to local variable y1 | Operators.cs:10:25:10:25 | 3 | >>> | UnsignedRightShiftExpr | -| Operators.cs:13:9:13:16 | ... >>> ... | Operators.cs:13:9:13:9 | access to local variable z | Operators.cs:13:16:13:16 | 5 | >>> | UnsignedRightShiftExpr | assignbitwise -| Operators.cs:13:9:13:16 | ... >>>= ... | Operators.cs:13:9:13:9 | access to local variable z | Operators.cs:13:16:13:16 | 5 | >>>= | AssignUnsighedRightShiftExpr | +| Operators.cs:13:9:13:16 | ... >>>= ... | Operators.cs:13:9:13:9 | access to local variable z | Operators.cs:13:16:13:16 | 5 | >>>= | AssignUnsignedRightShiftExpr | userdefined | Operators.cs:19:44:19:46 | >>> | op_UnsignedRightShift | UnsignedRightShiftOperator | diff --git a/csharp/ql/test/library-tests/csharp11/operators.ql b/csharp/ql/test/library-tests/csharp11/operators.ql index 607efac0c26c..f1543e2d744a 100644 --- a/csharp/ql/test/library-tests/csharp11/operators.ql +++ b/csharp/ql/test/library-tests/csharp11/operators.ql @@ -14,8 +14,8 @@ query predicate assignbitwise( AssignBitwiseOperation op, Expr left, Expr right, string name, string qlclass ) { op.getFile().getStem() = "Operators" and - left = op.getLValue() and - right = op.getRValue() and + left = op.getLeftOperand() and + right = op.getRightOperand() and name = op.getOperator() and qlclass = op.getAPrimaryQlClass() } diff --git a/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql b/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql index f3ef63fe2257..1895792f07c1 100644 --- a/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql +++ b/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql @@ -12,7 +12,7 @@ query predicate indexerCalls(IndexerCall indexer, int arg, Expr value) { query predicate elementAssignments( ElementWrite write, Assignment assignment, int index, Expr indexer ) { - write = assignment.getLValue() and indexer = write.getIndex(index) + write = assignment.getLeftOperand() and indexer = write.getIndex(index) } query predicate arrayQualifiers(ElementAccess access, Expr qualifier) { diff --git a/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.expected b/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.expected index d388d2fdb7c2..1b4f30ad6e75 100644 --- a/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.expected +++ b/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.expected @@ -1,5 +1,4 @@ nullcoalescing -| NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | | NullableRefTypes.cs:94:17:94:25 | ... ?? ... | assignments -| NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | +| NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | diff --git a/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.ql b/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.ql index a3a8ca20e927..1a452274677c 100644 --- a/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.ql +++ b/csharp/ql/test/library-tests/csharp8/NullCoalescingAssignment.ql @@ -2,6 +2,4 @@ import csharp query predicate nullcoalescing(NullCoalescingExpr expr) { any() } -query predicate assignments(AssignCoalesceExpr expr, Expr expanded) { - expanded = expr.getExpandedAssignment() -} +query predicate assignments(AssignCoalesceExpr expr) { any() } diff --git a/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected b/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected index 2657c450d681..b8d360d16084 100644 --- a/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected +++ b/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected @@ -4,9 +4,8 @@ | NullCoalescingAssignment.cs:7:9:7:24 | ... ...; | NullCoalescingAssignment.cs:7:20:7:23 | null | semmle.label | successor | | NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | NullCoalescingAssignment.cs:8:9:8:19 | ...; | semmle.label | successor | | NullCoalescingAssignment.cs:7:20:7:23 | null | NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | semmle.label | successor | -| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | semmle.label | non-null | +| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | semmle.label | non-null | | NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:15:8:18 | this access | semmle.label | null | -| NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | NullCoalescingAssignment.cs:5:10:5:23 | exit NullCoalescing (normal) | semmle.label | successor | -| NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | NullCoalescingAssignment.cs:5:10:5:23 | exit NullCoalescing (normal) | semmle.label | successor | | NullCoalescingAssignment.cs:8:9:8:19 | ...; | NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | semmle.label | successor | -| NullCoalescingAssignment.cs:8:15:8:18 | this access | NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | semmle.label | successor | +| NullCoalescingAssignment.cs:8:15:8:18 | this access | NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 861e4c519a82..29533a67083f 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -32,13 +32,14 @@ | LocalDataFlow.cs:59:13:59:25 | SSA def(sink1) | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | | LocalDataFlow.cs:59:21:59:25 | "abc" | LocalDataFlow.cs:59:13:59:17 | access to local variable sink1 | | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | LocalDataFlow.cs:60:9:60:22 | SSA def(sink1) | -| LocalDataFlow.cs:60:9:60:22 | ... + ... | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | +| LocalDataFlow.cs:60:9:60:22 | ... += ... | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | | LocalDataFlow.cs:60:9:60:22 | SSA def(sink1) | LocalDataFlow.cs:61:15:61:19 | access to local variable sink1 | +| LocalDataFlow.cs:60:18:60:22 | [post] access to local variable sink0 | LocalDataFlow.cs:168:20:168:24 | access to local variable sink0 | | LocalDataFlow.cs:60:18:60:22 | access to local variable sink0 | LocalDataFlow.cs:168:20:168:24 | access to local variable sink0 | | LocalDataFlow.cs:61:15:61:19 | [post] access to local variable sink1 | LocalDataFlow.cs:68:21:68:25 | access to local variable sink1 | | LocalDataFlow.cs:61:15:61:19 | access to local variable sink1 | LocalDataFlow.cs:68:21:68:25 | access to local variable sink1 | | LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | LocalDataFlow.cs:64:9:64:25 | SSA def(nonSink0) | -| LocalDataFlow.cs:64:9:64:25 | ... + ... | LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | +| LocalDataFlow.cs:64:9:64:25 | ... += ... | LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | | LocalDataFlow.cs:64:9:64:25 | SSA def(nonSink0) | LocalDataFlow.cs:65:15:65:22 | access to local variable nonSink0 | | LocalDataFlow.cs:65:15:65:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:72:20:72:27 | access to local variable nonSink0 | | LocalDataFlow.cs:65:15:65:22 | access to local variable nonSink0 | LocalDataFlow.cs:72:20:72:27 | access to local variable nonSink0 | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected index 0950638d8306..4be5dcf12952 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected @@ -31,19 +31,20 @@ | LocalDataFlow.cs:59:13:59:17 | access to local variable sink1 | LocalDataFlow.cs:59:13:59:25 | SSA def(sink1) | | LocalDataFlow.cs:59:13:59:25 | SSA def(sink1) | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | | LocalDataFlow.cs:59:21:59:25 | "abc" | LocalDataFlow.cs:59:13:59:17 | access to local variable sink1 | -| LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | LocalDataFlow.cs:60:9:60:22 | ... + ... | +| LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | LocalDataFlow.cs:60:9:60:22 | ... += ... | | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | LocalDataFlow.cs:60:9:60:22 | SSA def(sink1) | -| LocalDataFlow.cs:60:9:60:22 | ... + ... | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | +| LocalDataFlow.cs:60:9:60:22 | ... += ... | LocalDataFlow.cs:60:9:60:13 | access to local variable sink1 | | LocalDataFlow.cs:60:9:60:22 | SSA def(sink1) | LocalDataFlow.cs:61:15:61:19 | access to local variable sink1 | -| LocalDataFlow.cs:60:18:60:22 | access to local variable sink0 | LocalDataFlow.cs:60:9:60:22 | ... + ... | +| LocalDataFlow.cs:60:18:60:22 | [post] access to local variable sink0 | LocalDataFlow.cs:168:20:168:24 | access to local variable sink0 | +| LocalDataFlow.cs:60:18:60:22 | access to local variable sink0 | LocalDataFlow.cs:60:9:60:22 | ... += ... | | LocalDataFlow.cs:60:18:60:22 | access to local variable sink0 | LocalDataFlow.cs:168:20:168:24 | access to local variable sink0 | | LocalDataFlow.cs:61:15:61:19 | [post] access to local variable sink1 | LocalDataFlow.cs:68:21:68:25 | access to local variable sink1 | | LocalDataFlow.cs:61:15:61:19 | access to local variable sink1 | LocalDataFlow.cs:68:21:68:25 | access to local variable sink1 | -| LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | LocalDataFlow.cs:64:9:64:25 | ... + ... | +| LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | LocalDataFlow.cs:64:9:64:25 | ... += ... | | LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | LocalDataFlow.cs:64:9:64:25 | SSA def(nonSink0) | -| LocalDataFlow.cs:64:9:64:25 | ... + ... | LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | +| LocalDataFlow.cs:64:9:64:25 | ... += ... | LocalDataFlow.cs:64:9:64:16 | access to local variable nonSink0 | | LocalDataFlow.cs:64:9:64:25 | SSA def(nonSink0) | LocalDataFlow.cs:65:15:65:22 | access to local variable nonSink0 | -| LocalDataFlow.cs:64:21:64:25 | "abc" | LocalDataFlow.cs:64:9:64:25 | ... + ... | +| LocalDataFlow.cs:64:21:64:25 | "abc" | LocalDataFlow.cs:64:9:64:25 | ... += ... | | LocalDataFlow.cs:65:15:65:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:72:20:72:27 | access to local variable nonSink0 | | LocalDataFlow.cs:65:15:65:22 | access to local variable nonSink0 | LocalDataFlow.cs:72:20:72:27 | access to local variable nonSink0 | | LocalDataFlow.cs:68:13:68:17 | access to local variable sink5 | LocalDataFlow.cs:68:13:68:32 | SSA def(sink5) | diff --git a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected index ac03ba8b8f35..bc1f2cad5c70 100644 --- a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected +++ b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected @@ -153,8 +153,7 @@ | ModulusAnalysis.cs:92:25:92:25 | access to local variable j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.cs:92:29:92:31 | access to parameter cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.cs:92:34:92:34 | access to local variable j | SSA phi(j) | 0 | 0 | -| ModulusAnalysis.cs:92:34:92:39 | ... + ... | SSA phi(j) | 1 | 0 | -| ModulusAnalysis.cs:92:34:92:39 | ... = ... | SSA phi(j) | 1 | 0 | +| ModulusAnalysis.cs:92:34:92:39 | ... += ... | SSA phi(j) | 1 | 0 | | ModulusAnalysis.cs:92:39:92:39 | 1 | 0 | 1 | 0 | | ModulusAnalysis.cs:93:38:93:38 | access to local variable j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.cs:95:22:95:22 | 0 | 0 | 0 | 0 | @@ -165,12 +164,9 @@ | ModulusAnalysis.cs:95:34:95:34 | access to local variable k | 0 | 0 | 3 | | ModulusAnalysis.cs:95:34:95:34 | access to local variable k | SSA def(k) | 0 | 3 | | ModulusAnalysis.cs:95:34:95:34 | access to local variable k | SSA phi(k) | 0 | 0 | -| ModulusAnalysis.cs:95:34:95:39 | ... + ... | 0 | 0 | 3 | -| ModulusAnalysis.cs:95:34:95:39 | ... + ... | SSA def(k) | 0 | 3 | -| ModulusAnalysis.cs:95:34:95:39 | ... + ... | SSA phi(k) | 3 | 0 | -| ModulusAnalysis.cs:95:34:95:39 | ... = ... | 0 | 0 | 3 | -| ModulusAnalysis.cs:95:34:95:39 | ... = ... | SSA def(k) | 0 | 3 | -| ModulusAnalysis.cs:95:34:95:39 | ... = ... | SSA phi(k) | 3 | 0 | +| ModulusAnalysis.cs:95:34:95:39 | ... += ... | 0 | 0 | 3 | +| ModulusAnalysis.cs:95:34:95:39 | ... += ... | SSA def(k) | 0 | 3 | +| ModulusAnalysis.cs:95:34:95:39 | ... += ... | SSA phi(k) | 3 | 0 | | ModulusAnalysis.cs:95:39:95:39 | 3 | 0 | 3 | 0 | | ModulusAnalysis.cs:96:38:96:38 | access to local variable k | 0 | 0 | 3 | | ModulusAnalysis.cs:96:38:96:38 | access to local variable k | SSA def(k) | 0 | 3 | diff --git a/csharp/ql/test/library-tests/dataflow/nullcoalescing/NullCoalescing.cs b/csharp/ql/test/library-tests/dataflow/nullcoalescing/NullCoalescing.cs new file mode 100644 index 000000000000..7231d1e12655 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/nullcoalescing/NullCoalescing.cs @@ -0,0 +1,35 @@ +public class NullCoalescing +{ + public void M1() + { + var i = Source(1); + int? x = null; + x = x ?? i; + Sink(x); // $ hasValueFlow=1 + } + + public void M2() + { + var i = Source(2); + int? x = null; + x ??= i; + Sink(x); // $ hasValueFlow=2 + } + + public void M3(int? x) + { + var i = Source(3); + x = x ?? i; + Sink(x); // $ hasValueFlow=3 + } + + public void M4(int? x) + { + var i = Source(4); + x ??= i; + Sink(x); // $ hasValueFlow=4 + } + + public static void Sink(object o) { } + static T Source(object source) => throw null; +} diff --git a/csharp/ql/test/library-tests/dataflow/nullcoalescing/nullCoalescingFlow.expected b/csharp/ql/test/library-tests/dataflow/nullcoalescing/nullCoalescingFlow.expected new file mode 100644 index 000000000000..8894ec7006ff --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/nullcoalescing/nullCoalescingFlow.expected @@ -0,0 +1,70 @@ +models +edges +| NullCoalescing.cs:5:13:5:13 | access to local variable i : Nullable | NullCoalescing.cs:7:9:7:9 | access to local variable x : Nullable | provenance | | +| NullCoalescing.cs:5:13:5:13 | access to local variable i : Nullable | NullCoalescing.cs:7:9:7:9 | access to local variable x : Nullable | provenance | | +| NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | NullCoalescing.cs:5:13:5:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | NullCoalescing.cs:5:13:5:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:7:9:7:9 | access to local variable x : Nullable | NullCoalescing.cs:8:14:8:14 | (...) ... | provenance | | +| NullCoalescing.cs:7:9:7:9 | access to local variable x : Nullable | NullCoalescing.cs:8:14:8:14 | (...) ... | provenance | | +| NullCoalescing.cs:13:13:13:13 | access to local variable i : Nullable | NullCoalescing.cs:15:9:15:9 | access to local variable x : Nullable | provenance | | +| NullCoalescing.cs:13:13:13:13 | access to local variable i : Nullable | NullCoalescing.cs:15:9:15:9 | access to local variable x : Nullable | provenance | | +| NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | NullCoalescing.cs:13:13:13:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | NullCoalescing.cs:13:13:13:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:15:9:15:9 | access to local variable x : Nullable | NullCoalescing.cs:16:14:16:14 | (...) ... | provenance | | +| NullCoalescing.cs:15:9:15:9 | access to local variable x : Nullable | NullCoalescing.cs:16:14:16:14 | (...) ... | provenance | | +| NullCoalescing.cs:21:13:21:13 | access to local variable i : Nullable | NullCoalescing.cs:22:9:22:9 | access to parameter x : Nullable | provenance | | +| NullCoalescing.cs:21:13:21:13 | access to local variable i : Nullable | NullCoalescing.cs:22:9:22:9 | access to parameter x : Nullable | provenance | | +| NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | NullCoalescing.cs:21:13:21:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | NullCoalescing.cs:21:13:21:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:22:9:22:9 | access to parameter x : Nullable | NullCoalescing.cs:23:14:23:14 | (...) ... | provenance | | +| NullCoalescing.cs:22:9:22:9 | access to parameter x : Nullable | NullCoalescing.cs:23:14:23:14 | (...) ... | provenance | | +| NullCoalescing.cs:28:13:28:13 | access to local variable i : Nullable | NullCoalescing.cs:29:9:29:9 | access to parameter x : Nullable | provenance | | +| NullCoalescing.cs:28:13:28:13 | access to local variable i : Nullable | NullCoalescing.cs:29:9:29:9 | access to parameter x : Nullable | provenance | | +| NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | NullCoalescing.cs:28:13:28:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | NullCoalescing.cs:28:13:28:13 | access to local variable i : Nullable | provenance | | +| NullCoalescing.cs:29:9:29:9 | access to parameter x : Nullable | NullCoalescing.cs:30:14:30:14 | (...) ... | provenance | | +| NullCoalescing.cs:29:9:29:9 | access to parameter x : Nullable | NullCoalescing.cs:30:14:30:14 | (...) ... | provenance | | +nodes +| NullCoalescing.cs:5:13:5:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:5:13:5:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:7:9:7:9 | access to local variable x : Nullable | semmle.label | access to local variable x : Nullable | +| NullCoalescing.cs:7:9:7:9 | access to local variable x : Nullable | semmle.label | access to local variable x : Nullable | +| NullCoalescing.cs:8:14:8:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:8:14:8:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:13:13:13:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:13:13:13:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:15:9:15:9 | access to local variable x : Nullable | semmle.label | access to local variable x : Nullable | +| NullCoalescing.cs:15:9:15:9 | access to local variable x : Nullable | semmle.label | access to local variable x : Nullable | +| NullCoalescing.cs:16:14:16:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:16:14:16:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:21:13:21:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:21:13:21:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:22:9:22:9 | access to parameter x : Nullable | semmle.label | access to parameter x : Nullable | +| NullCoalescing.cs:22:9:22:9 | access to parameter x : Nullable | semmle.label | access to parameter x : Nullable | +| NullCoalescing.cs:23:14:23:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:23:14:23:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:28:13:28:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:28:13:28:13 | access to local variable i : Nullable | semmle.label | access to local variable i : Nullable | +| NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | semmle.label | call to method Source> : Nullable | +| NullCoalescing.cs:29:9:29:9 | access to parameter x : Nullable | semmle.label | access to parameter x : Nullable | +| NullCoalescing.cs:29:9:29:9 | access to parameter x : Nullable | semmle.label | access to parameter x : Nullable | +| NullCoalescing.cs:30:14:30:14 | (...) ... | semmle.label | (...) ... | +| NullCoalescing.cs:30:14:30:14 | (...) ... | semmle.label | (...) ... | +subpaths +testFailures +#select +| NullCoalescing.cs:8:14:8:14 | (...) ... | NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | NullCoalescing.cs:8:14:8:14 | (...) ... | $@ | NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:8:14:8:14 | (...) ... | NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | NullCoalescing.cs:8:14:8:14 | (...) ... | $@ | NullCoalescing.cs:5:17:5:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:16:14:16:14 | (...) ... | NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | NullCoalescing.cs:16:14:16:14 | (...) ... | $@ | NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:16:14:16:14 | (...) ... | NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | NullCoalescing.cs:16:14:16:14 | (...) ... | $@ | NullCoalescing.cs:13:17:13:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:23:14:23:14 | (...) ... | NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | NullCoalescing.cs:23:14:23:14 | (...) ... | $@ | NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:23:14:23:14 | (...) ... | NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | NullCoalescing.cs:23:14:23:14 | (...) ... | $@ | NullCoalescing.cs:21:17:21:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:30:14:30:14 | (...) ... | NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | NullCoalescing.cs:30:14:30:14 | (...) ... | $@ | NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | call to method Source> : Nullable | +| NullCoalescing.cs:30:14:30:14 | (...) ... | NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | NullCoalescing.cs:30:14:30:14 | (...) ... | $@ | NullCoalescing.cs:28:17:28:31 | call to method Source> : Nullable | call to method Source> : Nullable | diff --git a/csharp/ql/test/library-tests/dataflow/nullcoalescing/nullCoalescingFlow.ql b/csharp/ql/test/library-tests/dataflow/nullcoalescing/nullCoalescingFlow.ql new file mode 100644 index 000000000000..9ab95f59caf3 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/nullcoalescing/nullCoalescingFlow.ql @@ -0,0 +1,12 @@ +/** + * @kind path-problem + */ + +import csharp +import utils.test.InlineFlowTest +import DefaultFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected index 9f87bf59eebc..4dce60d9c2d9 100644 --- a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected +++ b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected @@ -52,8 +52,7 @@ | SignAnalysis.cs:80:13:80:17 | ... = ... | strictlyNegative | | SignAnalysis.cs:80:17:80:17 | access to parameter i | strictlyNegative | | SignAnalysis.cs:81:13:81:13 | access to local variable x | strictlyNegative | -| SignAnalysis.cs:81:13:81:18 | ... + ... | strictlyNegative | -| SignAnalysis.cs:81:13:81:18 | ... = ... | strictlyNegative | +| SignAnalysis.cs:81:13:81:18 | ... += ... | strictlyNegative | | SignAnalysis.cs:81:18:81:18 | access to parameter i | strictlyNegative | | SignAnalysis.cs:82:38:82:38 | access to local variable x | strictlyNegative | | SignAnalysis.cs:87:21:87:21 | access to parameter i | strictlyNegative | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected index 13036f0f0ae5..9246392b6621 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected @@ -46,7 +46,7 @@ | DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | Int32 x3 = ... | DefUse.cs:92:15:92:16 | access to local variable x3 | | DefUse.cs:89:13:89:14 | x3 | DefUse.cs:92:15:92:16 | access to local variable x3 | DefUse.cs:94:13:94:14 | access to local variable x3 | | DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | access to local variable x4 | DefUse.cs:95:13:95:14 | access to local variable x4 | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | ... = ... | DefUse.cs:105:13:105:14 | access to local variable x5 | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | ... += ... | DefUse.cs:105:13:105:14 | access to local variable x5 | | DefUse.cs:118:45:118:45 | i | DefUse.cs:118:45:118:45 | i | DefUse.cs:118:65:118:65 | access to parameter i | | DefUse.cs:120:17:120:21 | Field | DefUse.cs:53:9:53:17 | ... = ... | DefUse.cs:54:13:54:17 | access to field Field | | DefUse.cs:122:16:122:21 | Field2 | DefUse.cs:63:9:63:18 | ... = ... | DefUse.cs:64:13:64:18 | access to field Field2 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected index 4bbe88295edb..923d62a96ecb 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected @@ -76,7 +76,7 @@ | DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:97:13:97:18 | Int32 x5 = ... | | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 | | DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:101:13:101:23 | ... = ... | -| DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... = ... | +| DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... += ... | | DefUse.cs:114:47:114:52 | SSA def(i) | DefUse.cs:114:47:114:52 | ... = ... | | DefUse.cs:116:47:116:51 | SSA def(i) | DefUse.cs:116:47:116:51 | ... = ... | | DefUse.cs:118:45:118:45 | SSA param(i) | DefUse.cs:118:45:118:45 | i | @@ -245,7 +245,7 @@ | Test.cs:14:17:14:19 | SSA def(x) | Test.cs:14:17:14:19 | ++... | | Test.cs:15:13:15:17 | SSA def(z) | Test.cs:15:13:15:17 | ... = ... | | Test.cs:19:13:19:17 | SSA def(y) | Test.cs:19:13:19:17 | ... = ... | -| Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | ... = ... | +| Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | ... += ... | | Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:21:13:21:22 | ... = ... | | Test.cs:22:13:22:17 | SSA def(z) | Test.cs:22:13:22:17 | ... = ... | | Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:24:9:24:15 | ...; | @@ -255,16 +255,16 @@ | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:25:16:25:16 | access to local variable x | | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:25:16:25:16 | access to local variable x | | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | -| Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | ... = ... | +| Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | ... -= ... | | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:33:9:33:19 | ...; | | Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:18:34:22 | Int32 i = ... | | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:25:34:25 | access to local variable i | | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:34:25:34:25 | access to local variable i | | Test.cs:34:33:34:35 | SSA def(i) | Test.cs:34:33:34:35 | ...++ | -| Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | ... = ... | +| Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | ... += ... | | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:39:9:42:9 | foreach (... ... in ...) ... | | Test.cs:39:22:39:22 | SSA def(w) | Test.cs:39:22:39:22 | Int32 w | -| Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... = ... | +| Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... += ... | | Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:46:10:46:10 | g | | Test.cs:46:16:46:18 | SSA param(in) | Test.cs:46:16:46:18 | in | | Test.cs:50:13:50:20 | SSA def(out) | Test.cs:50:13:50:20 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected index a8bcd3e4daf9..8582dd1cf6e0 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected @@ -47,7 +47,7 @@ | DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:93:15:93:16 | access to local variable x4 | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:97:13:97:18 | Int32 x5 = ... | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:101:13:101:23 | ... = ... | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... = ... | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... += ... | | DefUse.cs:114:42:114:42 | i | DefUse.cs:114:47:114:52 | SSA def(i) | DefUse.cs:114:47:114:52 | ... = ... | | DefUse.cs:116:42:116:42 | i | DefUse.cs:116:47:116:51 | SSA def(i) | DefUse.cs:116:47:116:51 | ... = ... | | DefUse.cs:118:45:118:45 | i | DefUse.cs:118:68:118:72 | SSA def(i) | DefUse.cs:118:68:118:72 | ... = ... | @@ -117,17 +117,17 @@ | Properties.cs:78:9:78:15 | this.xs | Properties.cs:81:9:81:22 | SSA def(this.xs) | Properties.cs:81:9:81:22 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:83:9:83:22 | SSA def(this.xs) | Properties.cs:83:9:83:22 | ... = ... | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | -| Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... = ... | +| Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... += ... | | Test.cs:7:9:7:13 | this.field | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | | Test.cs:7:9:7:13 | this.field | Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:21:13:21:22 | ... = ... | | Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | SSA def(x) | Test.cs:8:13:8:17 | Int32 x = ... | | Test.cs:8:13:8:13 | x | Test.cs:13:13:13:15 | SSA def(x) | Test.cs:13:13:13:15 | ...++ | | Test.cs:8:13:8:13 | x | Test.cs:14:17:14:19 | SSA def(x) | Test.cs:14:17:14:19 | ++... | -| Test.cs:8:13:8:13 | x | Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | ... = ... | +| Test.cs:8:13:8:13 | x | Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | ... += ... | | Test.cs:9:13:9:13 | y | Test.cs:14:13:14:19 | SSA def(y) | Test.cs:14:13:14:19 | ... = ... | | Test.cs:9:13:9:13 | y | Test.cs:19:13:19:17 | SSA def(y) | Test.cs:19:13:19:17 | ... = ... | -| Test.cs:9:13:9:13 | y | Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | ... = ... | -| Test.cs:9:13:9:13 | y | Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | ... = ... | +| Test.cs:9:13:9:13 | y | Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | ... += ... | +| Test.cs:9:13:9:13 | y | Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | ... -= ... | | Test.cs:10:13:10:13 | z | Test.cs:15:13:15:17 | SSA def(z) | Test.cs:15:13:15:17 | ... = ... | | Test.cs:10:13:10:13 | z | Test.cs:22:13:22:17 | SSA def(z) | Test.cs:22:13:22:17 | ... = ... | | Test.cs:34:18:34:18 | i | Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:18:34:22 | Int32 i = ... | diff --git a/csharp/ql/test/library-tests/dispatch/CallContext.expected b/csharp/ql/test/library-tests/dispatch/CallContext.expected index 2ef2223ebd7d..09fe22783aaa 100644 --- a/csharp/ql/test/library-tests/dispatch/CallContext.expected +++ b/csharp/ql/test/library-tests/dispatch/CallContext.expected @@ -20,12 +20,12 @@ mayBenefitFromCallContext | ViableCallable.cs:245:9:245:15 | call to method M | | ViableCallable.cs:294:9:294:15 | call to method M | | ViableCallable.cs:297:9:297:20 | call to method M | -| ViableCallable.cs:425:9:425:18 | call to method M | -| ViableCallable.cs:469:9:469:30 | call to method M2 | -| ViableCallable.cs:475:9:475:30 | call to method M2 | -| ViableCallable.cs:577:18:577:22 | call to operator / | -| ViableCallable.cs:580:26:580:30 | call to operator checked / | -| ViableCallable.cs:586:9:586:15 | call to method M12 | -| ViableCallable.cs:619:9:619:13 | call to method M | -| ViableCallable.cs:683:9:683:16 | call to method M | -| ViableCallable.cs:687:9:687:16 | call to method M | +| ViableCallable.cs:426:9:426:18 | call to method M | +| ViableCallable.cs:470:9:470:30 | call to method M2 | +| ViableCallable.cs:476:9:476:30 | call to method M2 | +| ViableCallable.cs:578:18:578:22 | call to operator / | +| ViableCallable.cs:581:26:581:30 | call to operator checked / | +| ViableCallable.cs:587:9:587:15 | call to method M12 | +| ViableCallable.cs:620:9:620:13 | call to method M | +| ViableCallable.cs:684:9:684:16 | call to method M | +| ViableCallable.cs:688:9:688:16 | call to method M | diff --git a/csharp/ql/test/library-tests/dispatch/CallGraph.expected b/csharp/ql/test/library-tests/dispatch/CallGraph.expected index 31e2a99ae24c..8c93277cb549 100644 --- a/csharp/ql/test/library-tests/dispatch/CallGraph.expected +++ b/csharp/ql/test/library-tests/dispatch/CallGraph.expected @@ -24,6 +24,7 @@ | ExactCallable.cs:15:25:15:35 | Run`2 | ExactCallable.cs:172:21:172:33 | MethodWithOut | | ExactCallable.cs:15:25:15:35 | Run`2 | ExactCallable.cs:177:21:177:34 | MethodWithOut2 | | ExactCallable.cs:182:21:182:22 | M1 | ExactCallable.cs:187:21:187:22 | M2 | +| TypeFlow.cs:3:7:3:14 | | TypeFlow.cs:22:20:22:22 | set_Prop | | TypeFlow.cs:5:5:5:12 | TypeFlow | TypeFlow.cs:24:10:24:12 | Run | | TypeFlow.cs:24:10:24:12 | Run | TypeFlow.cs:12:29:12:34 | Method | | TypeFlow.cs:24:10:24:12 | Run | TypeFlow.cs:17:30:17:35 | Method | @@ -218,62 +219,62 @@ | ViableCallable.cs:308:17:308:19 | Run | ViableCallable.cs:286:24:286:28 | M`1 | | ViableCallable.cs:308:17:308:19 | Run | ViableCallable.cs:303:26:303:30 | M`1 | | ViableCallable.cs:361:17:361:19 | Run | ViableCallable.cs:359:10:359:10 | M | -| ViableCallable.cs:361:17:361:19 | Run | ViableCallable.cs:375:5:375:7 | C11 | -| ViableCallable.cs:389:10:389:16 | Run`1 | ViableCallable.cs:385:33:385:33 | M | -| ViableCallable.cs:395:10:395:17 | Run2`1 | ViableCallable.cs:389:10:389:16 | Run | -| ViableCallable.cs:400:10:400:13 | Run3 | ViableCallable.cs:395:10:395:17 | Run2 | -| ViableCallable.cs:422:10:422:12 | Run | ViableCallable.cs:213:21:213:27 | Mock | -| ViableCallable.cs:422:10:422:12 | Run | ViableCallable.cs:410:36:410:40 | M`1 | -| ViableCallable.cs:422:10:422:12 | Run | ViableCallable.cs:416:53:416:57 | M`1 | -| ViableCallable.cs:422:10:422:12 | Run | ViableCallable.cs:418:42:418:46 | M`1 | -| ViableCallable.cs:444:22:444:26 | M2`1 | ViableCallable.cs:469:14:469:29 | (...) => ... | -| ViableCallable.cs:444:22:444:26 | M2`1 | ViableCallable.cs:475:14:475:29 | (...) => ... | -| ViableCallable.cs:449:10:449:11 | M1 | ViableCallable.cs:443:23:443:24 | M1 | -| ViableCallable.cs:449:10:449:11 | M1 | ViableCallable.cs:458:23:458:27 | M2`1 | -| ViableCallable.cs:458:23:458:27 | M2`1 | ViableCallable.cs:455:17:455:23 | (...) => ... | -| ViableCallable.cs:458:23:458:27 | M2`1 | ViableCallable.cs:463:14:463:20 | (...) => ... | -| ViableCallable.cs:458:23:458:27 | M2`1 | ViableCallable.cs:469:14:469:29 | (...) => ... | -| ViableCallable.cs:458:23:458:27 | M2`1 | ViableCallable.cs:475:14:475:29 | (...) => ... | -| ViableCallable.cs:460:10:460:14 | M3`1 | ViableCallable.cs:458:23:458:27 | M2`1 | -| ViableCallable.cs:466:10:466:14 | M4`1 | ViableCallable.cs:444:22:444:26 | M2`1 | -| ViableCallable.cs:466:10:466:14 | M4`1 | ViableCallable.cs:458:23:458:27 | M2`1 | -| ViableCallable.cs:472:10:472:14 | M5`1 | ViableCallable.cs:444:22:444:26 | M2`1 | -| ViableCallable.cs:472:10:472:14 | M5`1 | ViableCallable.cs:458:23:458:27 | M2`1 | -| ViableCallable.cs:489:10:489:12 | Run | ViableCallable.cs:482:10:482:11 | M2 | -| ViableCallable.cs:489:10:489:12 | Run | ViableCallable.cs:487:17:487:18 | M1 | -| ViableCallable.cs:506:10:506:12 | Run | ViableCallable.cs:501:32:501:32 | + | -| ViableCallable.cs:506:10:506:12 | Run | ViableCallable.cs:502:40:502:40 | checked + | -| ViableCallable.cs:506:10:506:12 | Run | ViableCallable.cs:503:28:503:35 | explicit conversion | -| ViableCallable.cs:506:10:506:12 | Run | ViableCallable.cs:504:28:504:35 | checked explicit conversion | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:528:39:528:39 | checked - | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:530:31:530:31 | * | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:531:39:531:39 | checked * | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:533:31:533:31 | / | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:534:39:534:39 | checked / | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:538:18:538:20 | M12 | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:540:18:540:20 | M13 | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:545:32:545:32 | + | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:546:40:546:40 | checked + | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:548:32:548:32 | - | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:550:32:550:32 | / | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:551:40:551:40 | checked / | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:553:17:553:19 | M11 | -| ViableCallable.cs:556:10:556:15 | Run`1 | ViableCallable.cs:554:17:554:19 | M12 | -| ViableCallable.cs:610:17:610:23 | Run1`1 | ViableCallable.cs:602:21:602:21 | M | -| ViableCallable.cs:616:17:616:23 | Run2`1 | ViableCallable.cs:602:21:602:21 | M | -| ViableCallable.cs:616:17:616:23 | Run2`1 | ViableCallable.cs:607:21:607:21 | M | -| ViableCallable.cs:657:17:657:20 | Run1 | ViableCallable.cs:635:21:635:21 | M | -| ViableCallable.cs:657:17:657:20 | Run1 | ViableCallable.cs:637:21:637:21 | M | -| ViableCallable.cs:668:17:668:20 | Run2 | ViableCallable.cs:651:21:651:21 | M | -| ViableCallable.cs:668:17:668:20 | Run2 | ViableCallable.cs:654:21:654:21 | M | -| ViableCallable.cs:679:17:679:20 | Run3 | ViableCallable.cs:635:21:635:21 | M | -| ViableCallable.cs:679:17:679:20 | Run3 | ViableCallable.cs:637:21:637:21 | M | -| ViableCallable.cs:679:17:679:20 | Run3 | ViableCallable.cs:646:21:646:21 | M | -| ViableCallable.cs:679:17:679:20 | Run3 | ViableCallable.cs:648:21:648:21 | M | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:704:24:704:31 | Partial1 | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:705:42:705:44 | get_Property | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:705:63:705:65 | set_Property | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:707:49:707:51 | get_Item | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:707:70:707:72 | set_Item | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:708:51:708:53 | add_Event | -| ViableCallable.cs:711:17:711:20 | Run1 | ViableCallable.cs:708:59:708:64 | remove_Event | +| ViableCallable.cs:361:17:361:19 | Run | ViableCallable.cs:376:5:376:7 | C11 | +| ViableCallable.cs:390:10:390:16 | Run`1 | ViableCallable.cs:386:33:386:33 | M | +| ViableCallable.cs:396:10:396:17 | Run2`1 | ViableCallable.cs:390:10:390:16 | Run | +| ViableCallable.cs:401:10:401:13 | Run3 | ViableCallable.cs:396:10:396:17 | Run2 | +| ViableCallable.cs:423:10:423:12 | Run | ViableCallable.cs:213:21:213:27 | Mock | +| ViableCallable.cs:423:10:423:12 | Run | ViableCallable.cs:411:36:411:40 | M`1 | +| ViableCallable.cs:423:10:423:12 | Run | ViableCallable.cs:417:53:417:57 | M`1 | +| ViableCallable.cs:423:10:423:12 | Run | ViableCallable.cs:419:42:419:46 | M`1 | +| ViableCallable.cs:445:22:445:26 | M2`1 | ViableCallable.cs:470:14:470:29 | (...) => ... | +| ViableCallable.cs:445:22:445:26 | M2`1 | ViableCallable.cs:476:14:476:29 | (...) => ... | +| ViableCallable.cs:450:10:450:11 | M1 | ViableCallable.cs:444:23:444:24 | M1 | +| ViableCallable.cs:450:10:450:11 | M1 | ViableCallable.cs:459:23:459:27 | M2`1 | +| ViableCallable.cs:459:23:459:27 | M2`1 | ViableCallable.cs:456:17:456:23 | (...) => ... | +| ViableCallable.cs:459:23:459:27 | M2`1 | ViableCallable.cs:464:14:464:20 | (...) => ... | +| ViableCallable.cs:459:23:459:27 | M2`1 | ViableCallable.cs:470:14:470:29 | (...) => ... | +| ViableCallable.cs:459:23:459:27 | M2`1 | ViableCallable.cs:476:14:476:29 | (...) => ... | +| ViableCallable.cs:461:10:461:14 | M3`1 | ViableCallable.cs:459:23:459:27 | M2`1 | +| ViableCallable.cs:467:10:467:14 | M4`1 | ViableCallable.cs:445:22:445:26 | M2`1 | +| ViableCallable.cs:467:10:467:14 | M4`1 | ViableCallable.cs:459:23:459:27 | M2`1 | +| ViableCallable.cs:473:10:473:14 | M5`1 | ViableCallable.cs:445:22:445:26 | M2`1 | +| ViableCallable.cs:473:10:473:14 | M5`1 | ViableCallable.cs:459:23:459:27 | M2`1 | +| ViableCallable.cs:490:10:490:12 | Run | ViableCallable.cs:483:10:483:11 | M2 | +| ViableCallable.cs:490:10:490:12 | Run | ViableCallable.cs:488:17:488:18 | M1 | +| ViableCallable.cs:507:10:507:12 | Run | ViableCallable.cs:502:32:502:32 | + | +| ViableCallable.cs:507:10:507:12 | Run | ViableCallable.cs:503:40:503:40 | checked + | +| ViableCallable.cs:507:10:507:12 | Run | ViableCallable.cs:504:28:504:35 | explicit conversion | +| ViableCallable.cs:507:10:507:12 | Run | ViableCallable.cs:505:28:505:35 | checked explicit conversion | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:529:39:529:39 | checked - | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:531:31:531:31 | * | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:532:39:532:39 | checked * | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:534:31:534:31 | / | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:535:39:535:39 | checked / | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:539:18:539:20 | M12 | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:541:18:541:20 | M13 | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:546:32:546:32 | + | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:547:40:547:40 | checked + | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:549:32:549:32 | - | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:551:32:551:32 | / | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:552:40:552:40 | checked / | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:554:17:554:19 | M11 | +| ViableCallable.cs:557:10:557:15 | Run`1 | ViableCallable.cs:555:17:555:19 | M12 | +| ViableCallable.cs:611:17:611:23 | Run1`1 | ViableCallable.cs:603:21:603:21 | M | +| ViableCallable.cs:617:17:617:23 | Run2`1 | ViableCallable.cs:603:21:603:21 | M | +| ViableCallable.cs:617:17:617:23 | Run2`1 | ViableCallable.cs:608:21:608:21 | M | +| ViableCallable.cs:658:17:658:20 | Run1 | ViableCallable.cs:636:21:636:21 | M | +| ViableCallable.cs:658:17:658:20 | Run1 | ViableCallable.cs:638:21:638:21 | M | +| ViableCallable.cs:669:17:669:20 | Run2 | ViableCallable.cs:652:21:652:21 | M | +| ViableCallable.cs:669:17:669:20 | Run2 | ViableCallable.cs:655:21:655:21 | M | +| ViableCallable.cs:680:17:680:20 | Run3 | ViableCallable.cs:636:21:636:21 | M | +| ViableCallable.cs:680:17:680:20 | Run3 | ViableCallable.cs:638:21:638:21 | M | +| ViableCallable.cs:680:17:680:20 | Run3 | ViableCallable.cs:647:21:647:21 | M | +| ViableCallable.cs:680:17:680:20 | Run3 | ViableCallable.cs:649:21:649:21 | M | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:705:24:705:31 | Partial1 | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:706:42:706:44 | get_Property | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:706:63:706:65 | set_Property | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:708:49:708:51 | get_Item | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:708:70:708:72 | set_Item | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:709:51:709:53 | add_Event | +| ViableCallable.cs:712:17:712:20 | Run1 | ViableCallable.cs:709:59:709:64 | remove_Event | diff --git a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected index 84dc17b073aa..82376653095b 100644 --- a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected +++ b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected @@ -467,61 +467,61 @@ | ViableCallable.cs:311:9:311:15 | call to method M | C7`1.M(T1, T3) | | ViableCallable.cs:314:9:314:20 | call to method M | C7`1.M(T1, T3) | | ViableCallable.cs:317:9:317:20 | call to method M | C6.M(T1, T3) | -| ViableCallable.cs:367:9:367:14 | dynamic call to method M | C11.M(dynamic) | -| ViableCallable.cs:369:9:369:18 | dynamic object creation of type C11 | C11.C11(C11) | -| ViableCallable.cs:392:9:392:13 | call to method M | C12+C13.M() | -| ViableCallable.cs:397:9:397:14 | call to method Run | C12.Run(T2) | -| ViableCallable.cs:402:9:402:23 | call to method Run2 | C12.Run2(C13) | -| ViableCallable.cs:425:9:425:18 | call to method M | C15+A1.M() | -| ViableCallable.cs:425:9:425:18 | call to method M | C15+A4.M() | -| ViableCallable.cs:425:9:425:18 | call to method M | C15+A5.M() | -| ViableCallable.cs:429:9:429:19 | call to method M | C15+A1.M() | -| ViableCallable.cs:433:9:433:21 | call to method M | C15+A4.M() | -| ViableCallable.cs:435:13:435:37 | call to method Mock | ViableCallable.Mock() | -| ViableCallable.cs:437:9:437:21 | call to method M | C15+A4.M() | -| ViableCallable.cs:437:9:437:21 | call to method M | C15+A5.M() | -| ViableCallable.cs:452:9:452:19 | call to method M1 | C16.M1(string) | -| ViableCallable.cs:455:9:455:24 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:463:9:463:21 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:469:9:469:30 | call to method M2 | C16.M2(Func) | -| ViableCallable.cs:469:9:469:30 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:475:9:475:30 | call to method M2 | C16.M2(Func) | -| ViableCallable.cs:475:9:475:30 | call to method M2 | C17.M2(Func) | -| ViableCallable.cs:492:9:492:14 | call to method M1 | C18.M1() | -| ViableCallable.cs:495:9:495:14 | call to method M2 | I2.M2() | -| ViableCallable.cs:509:18:509:22 | call to operator + | C19.+(C19, C19) | -| ViableCallable.cs:512:26:512:30 | call to operator checked + | C19.checked +(C19, C19) | -| ViableCallable.cs:515:18:515:23 | call to operator explicit conversion | C19.explicit conversion(C19) | -| ViableCallable.cs:518:26:518:31 | call to operator checked explicit conversion | C19.checked explicit conversion(C19) | -| ViableCallable.cs:559:18:559:22 | call to operator + | C20.+(C20, C20) | -| ViableCallable.cs:562:26:562:30 | call to operator checked + | C20.checked +(C20, C20) | -| ViableCallable.cs:565:18:565:22 | call to operator - | C20.-(C20, C20) | -| ViableCallable.cs:568:26:568:30 | call to operator checked - | I3.checked -(T, T) | -| ViableCallable.cs:571:18:571:22 | call to operator * | I3.*(T, T) | -| ViableCallable.cs:574:26:574:30 | call to operator checked * | I3.checked *(T, T) | -| ViableCallable.cs:577:18:577:22 | call to operator / | C20./(C20, C20) | -| ViableCallable.cs:577:18:577:22 | call to operator / | I3./(T, T) | -| ViableCallable.cs:580:26:580:30 | call to operator checked / | C20.checked /(C20, C20) | -| ViableCallable.cs:580:26:580:30 | call to operator checked / | I3.checked /(T, T) | -| ViableCallable.cs:583:9:583:15 | call to method M11 | C20.M11() | -| ViableCallable.cs:586:9:586:15 | call to method M12 | C20.M12() | -| ViableCallable.cs:586:9:586:15 | call to method M12 | I3.M12() | -| ViableCallable.cs:589:9:589:15 | call to method M13 | I3.M13() | -| ViableCallable.cs:613:9:613:13 | call to method M | C21+A1.M() | -| ViableCallable.cs:619:9:619:13 | call to method M | C21+A1.M() | -| ViableCallable.cs:619:9:619:13 | call to method M | C21+A2.M() | -| ViableCallable.cs:661:9:661:16 | call to method M | C22+TestOverloadResolution1.M(Int32[]) | -| ViableCallable.cs:665:9:665:16 | call to method M | C22+TestOverloadResolution1.M(List) | -| ViableCallable.cs:672:9:672:16 | call to method M | C22+TestOverloadResolution2.M(ReadOnlySpan) | -| ViableCallable.cs:676:9:676:16 | call to method M | C22+TestOverloadResolution2.M(IEnumerable) | -| ViableCallable.cs:683:9:683:16 | call to method M | C22+TestOverloadResolution1.M(Int32[]) | -| ViableCallable.cs:683:9:683:16 | call to method M | C22+TestOverloadResolution2.M(Int32[]) | -| ViableCallable.cs:687:9:687:16 | call to method M | C22+TestOverloadResolution1.M(List) | -| ViableCallable.cs:687:9:687:16 | call to method M | C22+TestOverloadResolution2.M(List) | -| ViableCallable.cs:716:9:716:18 | access to property Property | C23+Partial1.set_Property(object) | -| ViableCallable.cs:719:13:719:22 | access to property Property | C23+Partial1.get_Property() | -| ViableCallable.cs:722:9:722:12 | access to indexer | C23+Partial1.set_Item(int, object) | -| ViableCallable.cs:725:13:725:16 | access to indexer | C23+Partial1.get_Item(int) | -| ViableCallable.cs:728:9:728:15 | access to event Event | C23+Partial1.add_Event(EventHandler) | -| ViableCallable.cs:731:9:731:15 | access to event Event | C23+Partial1.remove_Event(EventHandler) | -| ViableCallable.cs:734:18:734:43 | object creation of type Partial1 | C23+Partial1.Partial1(object) | +| ViableCallable.cs:368:9:368:14 | dynamic call to method M | C11.M(dynamic) | +| ViableCallable.cs:370:9:370:18 | dynamic object creation of type C11 | C11.C11(C11) | +| ViableCallable.cs:393:9:393:13 | call to method M | C12+C13.M() | +| ViableCallable.cs:398:9:398:14 | call to method Run | C12.Run(T2) | +| ViableCallable.cs:403:9:403:23 | call to method Run2 | C12.Run2(C13) | +| ViableCallable.cs:426:9:426:18 | call to method M | C15+A1.M() | +| ViableCallable.cs:426:9:426:18 | call to method M | C15+A4.M() | +| ViableCallable.cs:426:9:426:18 | call to method M | C15+A5.M() | +| ViableCallable.cs:430:9:430:19 | call to method M | C15+A1.M() | +| ViableCallable.cs:434:9:434:21 | call to method M | C15+A4.M() | +| ViableCallable.cs:436:13:436:37 | call to method Mock | ViableCallable.Mock() | +| ViableCallable.cs:438:9:438:21 | call to method M | C15+A4.M() | +| ViableCallable.cs:438:9:438:21 | call to method M | C15+A5.M() | +| ViableCallable.cs:453:9:453:19 | call to method M1 | C16.M1(string) | +| ViableCallable.cs:456:9:456:24 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:464:9:464:21 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:470:9:470:30 | call to method M2 | C16.M2(Func) | +| ViableCallable.cs:470:9:470:30 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:476:9:476:30 | call to method M2 | C16.M2(Func) | +| ViableCallable.cs:476:9:476:30 | call to method M2 | C17.M2(Func) | +| ViableCallable.cs:493:9:493:14 | call to method M1 | C18.M1() | +| ViableCallable.cs:496:9:496:14 | call to method M2 | I2.M2() | +| ViableCallable.cs:510:18:510:22 | call to operator + | C19.+(C19, C19) | +| ViableCallable.cs:513:26:513:30 | call to operator checked + | C19.checked +(C19, C19) | +| ViableCallable.cs:516:18:516:23 | call to operator explicit conversion | C19.explicit conversion(C19) | +| ViableCallable.cs:519:26:519:31 | call to operator checked explicit conversion | C19.checked explicit conversion(C19) | +| ViableCallable.cs:560:18:560:22 | call to operator + | C20.+(C20, C20) | +| ViableCallable.cs:563:26:563:30 | call to operator checked + | C20.checked +(C20, C20) | +| ViableCallable.cs:566:18:566:22 | call to operator - | C20.-(C20, C20) | +| ViableCallable.cs:569:26:569:30 | call to operator checked - | I3.checked -(T, T) | +| ViableCallable.cs:572:18:572:22 | call to operator * | I3.*(T, T) | +| ViableCallable.cs:575:26:575:30 | call to operator checked * | I3.checked *(T, T) | +| ViableCallable.cs:578:18:578:22 | call to operator / | C20./(C20, C20) | +| ViableCallable.cs:578:18:578:22 | call to operator / | I3./(T, T) | +| ViableCallable.cs:581:26:581:30 | call to operator checked / | C20.checked /(C20, C20) | +| ViableCallable.cs:581:26:581:30 | call to operator checked / | I3.checked /(T, T) | +| ViableCallable.cs:584:9:584:15 | call to method M11 | C20.M11() | +| ViableCallable.cs:587:9:587:15 | call to method M12 | C20.M12() | +| ViableCallable.cs:587:9:587:15 | call to method M12 | I3.M12() | +| ViableCallable.cs:590:9:590:15 | call to method M13 | I3.M13() | +| ViableCallable.cs:614:9:614:13 | call to method M | C21+A1.M() | +| ViableCallable.cs:620:9:620:13 | call to method M | C21+A1.M() | +| ViableCallable.cs:620:9:620:13 | call to method M | C21+A2.M() | +| ViableCallable.cs:662:9:662:16 | call to method M | C22+TestOverloadResolution1.M(Int32[]) | +| ViableCallable.cs:666:9:666:16 | call to method M | C22+TestOverloadResolution1.M(List) | +| ViableCallable.cs:673:9:673:16 | call to method M | C22+TestOverloadResolution2.M(ReadOnlySpan) | +| ViableCallable.cs:677:9:677:16 | call to method M | C22+TestOverloadResolution2.M(IEnumerable) | +| ViableCallable.cs:684:9:684:16 | call to method M | C22+TestOverloadResolution1.M(Int32[]) | +| ViableCallable.cs:684:9:684:16 | call to method M | C22+TestOverloadResolution2.M(Int32[]) | +| ViableCallable.cs:688:9:688:16 | call to method M | C22+TestOverloadResolution1.M(List) | +| ViableCallable.cs:688:9:688:16 | call to method M | C22+TestOverloadResolution2.M(List) | +| ViableCallable.cs:717:9:717:18 | access to property Property | C23+Partial1.set_Property(object) | +| ViableCallable.cs:720:13:720:22 | access to property Property | C23+Partial1.get_Property() | +| ViableCallable.cs:723:9:723:12 | access to indexer | C23+Partial1.set_Item(int, object) | +| ViableCallable.cs:726:13:726:16 | access to indexer | C23+Partial1.get_Item(int) | +| ViableCallable.cs:729:9:729:15 | access to event Event | C23+Partial1.add_Event(EventHandler) | +| ViableCallable.cs:732:9:732:15 | access to event Event | C23+Partial1.remove_Event(EventHandler) | +| ViableCallable.cs:735:18:735:43 | object creation of type Partial1 | C23+Partial1.Partial1(object) | diff --git a/csharp/ql/test/library-tests/dispatch/ViableCallable.cs b/csharp/ql/test/library-tests/dispatch/ViableCallable.cs index dee8d9b0d1d6..61dfef7444c3 100644 --- a/csharp/ql/test/library-tests/dispatch/ViableCallable.cs +++ b/csharp/ql/test/library-tests/dispatch/ViableCallable.cs @@ -362,6 +362,7 @@ public void Run() { dynamic d = this; int x = 0; + // Viable callables: int.+ x += 42; // Viable callables: C11.M() d.M(x); diff --git a/csharp/ql/test/library-tests/dispatch/viableCallable.expected b/csharp/ql/test/library-tests/dispatch/viableCallable.expected index c4abbbd2e582..8791bd0ae41c 100644 --- a/csharp/ql/test/library-tests/dispatch/viableCallable.expected +++ b/csharp/ql/test/library-tests/dispatch/viableCallable.expected @@ -271,35 +271,36 @@ | ViableCallable.cs:311:9:311:15 | call to method M | M`1 | C7`1 | | ViableCallable.cs:314:9:314:20 | call to method M | M`1 | C7`1 | | ViableCallable.cs:317:9:317:20 | call to method M | M`1 | C6`2 | -| ViableCallable.cs:367:9:367:14 | dynamic call to method M | M | C11 | -| ViableCallable.cs:369:9:369:18 | dynamic object creation of type C11 | C11 | C11 | -| ViableCallable.cs:392:9:392:13 | call to method M | M | C13 | -| ViableCallable.cs:425:9:425:18 | call to method M | M`1 | A1 | -| ViableCallable.cs:425:9:425:18 | call to method M | M`1 | A4 | -| ViableCallable.cs:425:9:425:18 | call to method M | M`1 | A5 | -| ViableCallable.cs:427:13:427:20 | object creation of type A3 | A3 | A3 | -| ViableCallable.cs:429:9:429:19 | call to method M | M`1 | A1 | -| ViableCallable.cs:431:13:431:20 | object creation of type A4 | A4 | A4 | -| ViableCallable.cs:433:9:433:21 | call to method M | M`1 | A4 | -| ViableCallable.cs:437:9:437:21 | call to method M | M`1 | A4 | -| ViableCallable.cs:437:9:437:21 | call to method M | M`1 | A5 | -| ViableCallable.cs:492:9:492:14 | call to method M1 | M1 | C18 | -| ViableCallable.cs:495:9:495:14 | call to method M2 | M2 | I2 | -| ViableCallable.cs:509:18:509:22 | call to operator + | + | C19 | -| ViableCallable.cs:512:26:512:30 | call to operator checked + | checked + | C19 | -| ViableCallable.cs:515:18:515:23 | call to operator explicit conversion | explicit conversion | C19 | -| ViableCallable.cs:518:26:518:31 | call to operator checked explicit conversion | checked explicit conversion | C19 | -| ViableCallable.cs:559:18:559:22 | call to operator + | + | C20 | -| ViableCallable.cs:562:26:562:30 | call to operator checked + | checked + | C20 | -| ViableCallable.cs:565:18:565:22 | call to operator - | - | C20 | -| ViableCallable.cs:568:26:568:30 | call to operator checked - | checked - | I3`1 | -| ViableCallable.cs:571:18:571:22 | call to operator * | * | I3`1 | -| ViableCallable.cs:574:26:574:30 | call to operator checked * | checked * | I3`1 | -| ViableCallable.cs:577:18:577:22 | call to operator / | / | C20 | -| ViableCallable.cs:577:18:577:22 | call to operator / | / | I3`1 | -| ViableCallable.cs:580:26:580:30 | call to operator checked / | checked / | C20 | -| ViableCallable.cs:580:26:580:30 | call to operator checked / | checked / | I3`1 | -| ViableCallable.cs:583:9:583:15 | call to method M11 | M11 | C20 | -| ViableCallable.cs:586:9:586:15 | call to method M12 | M12 | C20 | -| ViableCallable.cs:586:9:586:15 | call to method M12 | M12 | I3`1 | -| ViableCallable.cs:589:9:589:15 | call to method M13 | M13 | I3`1 | +| ViableCallable.cs:366:9:366:15 | ... += ... | + | Int32 | +| ViableCallable.cs:368:9:368:14 | dynamic call to method M | M | C11 | +| ViableCallable.cs:370:9:370:18 | dynamic object creation of type C11 | C11 | C11 | +| ViableCallable.cs:393:9:393:13 | call to method M | M | C13 | +| ViableCallable.cs:426:9:426:18 | call to method M | M`1 | A1 | +| ViableCallable.cs:426:9:426:18 | call to method M | M`1 | A4 | +| ViableCallable.cs:426:9:426:18 | call to method M | M`1 | A5 | +| ViableCallable.cs:428:13:428:20 | object creation of type A3 | A3 | A3 | +| ViableCallable.cs:430:9:430:19 | call to method M | M`1 | A1 | +| ViableCallable.cs:432:13:432:20 | object creation of type A4 | A4 | A4 | +| ViableCallable.cs:434:9:434:21 | call to method M | M`1 | A4 | +| ViableCallable.cs:438:9:438:21 | call to method M | M`1 | A4 | +| ViableCallable.cs:438:9:438:21 | call to method M | M`1 | A5 | +| ViableCallable.cs:493:9:493:14 | call to method M1 | M1 | C18 | +| ViableCallable.cs:496:9:496:14 | call to method M2 | M2 | I2 | +| ViableCallable.cs:510:18:510:22 | call to operator + | + | C19 | +| ViableCallable.cs:513:26:513:30 | call to operator checked + | checked + | C19 | +| ViableCallable.cs:516:18:516:23 | call to operator explicit conversion | explicit conversion | C19 | +| ViableCallable.cs:519:26:519:31 | call to operator checked explicit conversion | checked explicit conversion | C19 | +| ViableCallable.cs:560:18:560:22 | call to operator + | + | C20 | +| ViableCallable.cs:563:26:563:30 | call to operator checked + | checked + | C20 | +| ViableCallable.cs:566:18:566:22 | call to operator - | - | C20 | +| ViableCallable.cs:569:26:569:30 | call to operator checked - | checked - | I3`1 | +| ViableCallable.cs:572:18:572:22 | call to operator * | * | I3`1 | +| ViableCallable.cs:575:26:575:30 | call to operator checked * | checked * | I3`1 | +| ViableCallable.cs:578:18:578:22 | call to operator / | / | C20 | +| ViableCallable.cs:578:18:578:22 | call to operator / | / | I3`1 | +| ViableCallable.cs:581:26:581:30 | call to operator checked / | checked / | C20 | +| ViableCallable.cs:581:26:581:30 | call to operator checked / | checked / | I3`1 | +| ViableCallable.cs:584:9:584:15 | call to method M11 | M11 | C20 | +| ViableCallable.cs:587:9:587:15 | call to method M12 | M12 | C20 | +| ViableCallable.cs:587:9:587:15 | call to method M12 | M12 | I3`1 | +| ViableCallable.cs:590:9:590:15 | call to method M13 | M13 | I3`1 | diff --git a/csharp/ql/test/library-tests/dynamic/DynamicOperatorCall.expected b/csharp/ql/test/library-tests/dynamic/DynamicOperatorCall.expected index 6c0a054c84ab..6e98bffaf6f8 100644 --- a/csharp/ql/test/library-tests/dynamic/DynamicOperatorCall.expected +++ b/csharp/ql/test/library-tests/dynamic/DynamicOperatorCall.expected @@ -1,6 +1,6 @@ | dynamic.cs:35:13:35:14 | dynamic call to operator - | - | 0 | dynamic.cs:35:14:35:14 | access to local variable d | | dynamic.cs:36:13:36:17 | dynamic call to operator + | + | 0 | dynamic.cs:36:13:36:13 | access to local variable d | | dynamic.cs:36:13:36:17 | dynamic call to operator + | + | 1 | dynamic.cs:36:17:36:17 | access to local variable d | -| dynamic.cs:37:9:37:14 | dynamic call to operator + | + | 0 | dynamic.cs:37:9:37:9 | access to local variable d | -| dynamic.cs:37:9:37:14 | dynamic call to operator + | + | 1 | dynamic.cs:37:14:37:14 | access to local variable d | +| dynamic.cs:37:9:37:14 | ... += ... | + | 0 | dynamic.cs:37:9:37:9 | access to local variable d | +| dynamic.cs:37:9:37:14 | ... += ... | + | 1 | dynamic.cs:37:14:37:14 | access to local variable d | | dynamic.cs:47:9:47:11 | dynamic call to operator ++ | ++ | 0 | dynamic.cs:47:9:47:9 | access to local variable d | diff --git a/csharp/ql/test/library-tests/dynamic/PrintAst.expected b/csharp/ql/test/library-tests/dynamic/PrintAst.expected index 3bde4d42d862..3526e0b6bf54 100644 --- a/csharp/ql/test/library-tests/dynamic/PrintAst.expected +++ b/csharp/ql/test/library-tests/dynamic/PrintAst.expected @@ -105,12 +105,12 @@ dynamic.cs: # 35| 15: [ExprStmt] ...; # 35| 0: [AssignExpr] ... = ... # 35| 0: [LocalVariableAccess] access to local variable d -# 35| 1: [DynamicOperatorCall] dynamic call to operator - +# 35| 1: [OperatorCall] dynamic call to operator - # 35| 0: [LocalVariableAccess] access to local variable d # 36| 16: [ExprStmt] ...; # 36| 0: [AssignExpr] ... = ... # 36| 0: [LocalVariableAccess] access to local variable d -# 36| 1: [DynamicOperatorCall] dynamic call to operator + +# 36| 1: [OperatorCall] dynamic call to operator + # 36| 0: [LocalVariableAccess] access to local variable d # 36| 1: [LocalVariableAccess] access to local variable d # 37| 17: [ExprStmt] ...; @@ -141,7 +141,7 @@ dynamic.cs: # 44| 0: [PostIncrExpr] ...++ # 44| 0: [LocalVariableAccess] access to local variable i # 47| 23: [ExprStmt] ...; -# 47| 0: [DynamicOperatorCall] dynamic call to operator ++ +# 47| 0: [OperatorCall] dynamic call to operator ++ # 47| 0: [LocalVariableAccess] access to local variable d # 50| 24: [ExprStmt] ...; # 50| 0: [PostIncrExpr] ...++ diff --git a/csharp/ql/test/library-tests/enums/Enums11.ql b/csharp/ql/test/library-tests/enums/Enums11.ql index 36b2c005a213..f6133517f7d6 100644 --- a/csharp/ql/test/library-tests/enums/Enums11.ql +++ b/csharp/ql/test/library-tests/enums/Enums11.ql @@ -6,7 +6,7 @@ import csharp from Expr e where - exists(Assignment a | a.getRValue() = e | + exists(Assignment a | a.getRightOperand() = e | a.getParent().(Field).getDeclaringType() instanceof Enum ) select e, e.getValue() diff --git a/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql b/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql index 48f6b41e19d2..e3c1530fb1a0 100644 --- a/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql +++ b/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql @@ -9,5 +9,5 @@ where c.hasName("LoginDialog") and e.getEnclosingCallable() = c and e.getTarget().hasName("Click") and - e.getLValue().getQualifier().(FieldAccess).getTarget().hasName("OkButton") + e.getLeftOperand().getQualifier().(FieldAccess).getTarget().hasName("OkButton") select c, e diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql index 2c8268e87e19..74e9d3cb1ffe 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f7") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f7") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql index e9fbbf01a10b..8f0390b0f825 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e, Parameter p, ParameterAccess pa where - assign.getLValue().(VariableAccess).getTarget().hasName("f7") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f7") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and p = e.getParameter(0) and diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql index e4c2e9ae9ba9..46d8907319d5 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f7") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f7") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getType().(DelegateType).getReturnType() instanceof IntType diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql index 4d424b65b84a..cca81c6b04e9 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f8") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f8") and e.getParent+() = assign and e.hasNoParameters() select e, e diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql index cbc6ac82ca7e..577d810dfad3 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e, LocalVariableAccess va where - assign.getLValue().(VariableAccess).getTarget().hasName("f8") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f8") and e.getParent+() = assign and e.hasNoParameters() and va.getEnclosingStmt().getParent+() = e.getBody() and diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql index 74d8cd27a948..c717aa260e07 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql @@ -6,11 +6,11 @@ import csharp from Assignment assign, AnonymousObjectCreation o, Assignment a, Property p where - assign.getLValue().(VariableAccess).getTarget().hasName("list2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("list2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(0) = a and - a.getRValue().getValue() = "2" and - p = a.getLValue().(PropertyAccess).getTarget() and + a.getRightOperand().getValue() = "2" and + p = a.getLeftOperand().(PropertyAccess).getTarget() and p.hasName("i") and p.getDeclaringType() = o.getObjectType() select o diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql index 5f9e16564b42..d55bf89d606b 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql @@ -6,11 +6,11 @@ import csharp from Assignment assign, AnonymousObjectCreation o, Assignment a, Property p where - assign.getLValue().(VariableAccess).getTarget().hasName("contacts2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(0) = a and - a.getRValue().getValue() = "Chris Smith" and - p = a.getLValue().(PropertyAccess).getTarget() and + a.getRightOperand().getValue() = "Chris Smith" and + p = a.getLeftOperand().(PropertyAccess).getTarget() and p.hasName("Name") and p.getDeclaringType() = o.getObjectType() select o, p.getType().toString() diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql index afa9ca0d3b29..6033bfed38ad 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql @@ -6,11 +6,11 @@ import csharp from Assignment assign, AnonymousObjectCreation o, Assignment a, Property p where - assign.getLValue().(VariableAccess).getTarget().hasName("contacts2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(1) = a and - a.getRValue() instanceof ArrayCreation and - p = a.getLValue().(PropertyAccess).getTarget() and + a.getRightOperand() instanceof ArrayCreation and + p = a.getLeftOperand().(PropertyAccess).getTarget() and p.hasName("PhoneNumbers") and p.getDeclaringType() = o.getObjectType() select o, p.getType().getName() diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql index b6354d1f4931..a52278839f2e 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql @@ -8,7 +8,7 @@ from Assignment assign, AnonymousObjectCreation o, Assignment a, AnonymousObjectCreation p, Assignment b where - assign.getLValue().(VariableAccess).getTarget().hasName("contacts2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(1) = a and p.getParent+() = assign and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql index fba7a4036156..6f728347bff1 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e, ArrayInitializer i where - a.getLValue().(VariableAccess).getTarget().hasName("is1") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is1") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and i = e.getInitializer() and e.isImplicitlySized() and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql index d8a1df128671..951ca22c0c2f 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql @@ -6,9 +6,9 @@ import csharp from Assignment a, ArrayCreation e, CastExpr cast where - a.getLValue().(VariableAccess).getTarget().hasName("os") and + a.getLeftOperand().(VariableAccess).getTarget().hasName("os") and e.getEnclosingCallable().hasName("MainElementAccess") and - e = a.getRValue() and + e = a.getRightOperand() and not e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql index ae56d5798396..88ce79bc91e5 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e, ArrayInitializer i where - a.getLValue().(VariableAccess).getTarget().hasName("is2") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is2") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and i = e.getInitializer() and e.getNumberOfLengthArguments() = 2 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql index efe626dab088..0da55f864798 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is3") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is3") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and not e.hasInitializer() and e.getNumberOfLengthArguments() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql index 2a0dd5312833..b79ec3f7bd6d 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is4") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is4") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and not e.hasInitializer() and e.getNumberOfLengthArguments() = 2 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql index 04c29cafba8c..88df5bef175c 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e, int i where - a.getLValue().(VariableAccess).getTarget().hasName("is5") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is5") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql index 7ca6bbe9668f..237900bbe7c9 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is6") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is6") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql index e34253a4f02b..a466195a0b1e 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is7") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is7") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql index cc1fd366db13..8eb810247c0a 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("contacts2") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql index fc4b561c170f..55ba1d1edb11 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("t") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("t") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/Lambda1.ql b/csharp/ql/test/library-tests/expressions/Lambda1.ql index f4787c584f32..4e4d17b9d244 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda1.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda1.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f1") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f1") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof ShortType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda2.ql b/csharp/ql/test/library-tests/expressions/Lambda2.ql index 5fff4bd2cf62..ff5c06ec6704 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda2.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda2.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f2") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda3.ql b/csharp/ql/test/library-tests/expressions/Lambda3.ql index 32aa919cd205..46d3a411b36f 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda3.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda3.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f3") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f3") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda4.ql b/csharp/ql/test/library-tests/expressions/Lambda4.ql index ca7eb7a4207b..69ac40ad932f 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda4.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda4.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f4") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f4") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda5.ql b/csharp/ql/test/library-tests/expressions/Lambda5.ql index cc577aa85cb7..3836ca4effd0 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda5.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda5.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f5") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f5") and e.getParent+() = assign and e.getNumberOfParameters() = 2 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda6.ql b/csharp/ql/test/library-tests/expressions/Lambda6.ql index c584e4f6c093..4a6ee3128346 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda6.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda6.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f6") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f6") and e.getParent+() = assign and e.getNumberOfParameters() = 0 and e.getType().(DelegateType).hasName("Unit") and diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql index abd4a9d6ec6b..971654a95b3a 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql @@ -6,7 +6,7 @@ import csharp from Assignment a, CollectionInitializer i where - a.getLValue().(VariableAccess).getTarget().hasName("list1") and + a.getLeftOperand().(VariableAccess).getTarget().hasName("list1") and i.getParent+() = a and i.getElementInitializer(0).getArgument(0) instanceof AssignExpr select i.getAChild+() diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql index c874735c3000..0265579ff677 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql @@ -6,7 +6,7 @@ import csharp from Assignment a, CollectionInitializer i, AnonymousObjectCreation o where - a.getLValue().(VariableAccess).getTarget().hasName("list2") and + a.getLeftOperand().(VariableAccess).getTarget().hasName("list2") and i.getParent+() = a and i.getElementInitializer(0).getArgument(0) = o select i, o diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql index 5812397b11b6..6ec3e2ec327b 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql @@ -15,9 +15,9 @@ where cc.hasName("Point") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("X") and - a.getRValue().getValue() = "0" and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("X") and + a.getRightOperand().getValue() = "0" and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("Y") and - b.getRValue().getValue() = "1" + b.getLeftOperand().(PropertyAccess).getTarget().hasName("Y") and + b.getRightOperand().getValue() = "1" select e, i, a, b diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql index cf31f518ec73..e130da484d74 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql @@ -15,10 +15,10 @@ where cc.hasName("Point") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("X") and - a.getRValue().getValue() = "2" and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("X") and + a.getRightOperand().getValue() = "2" and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("Y") and - b.getRValue().getValue() = "3" and + b.getLeftOperand().(PropertyAccess).getTarget().hasName("Y") and + b.getRightOperand().getValue() = "3" and i.getNumberOfMemberInitializers() = 2 select i, a, b diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql index 11e771890ca2..529607c8d4ba 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql @@ -15,10 +15,10 @@ where cc.hasName("Rectangle") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("P1") and - a.getRValue() instanceof ObjectCreation and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("P1") and + a.getRightOperand() instanceof ObjectCreation and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("P2") and - b.getRValue() instanceof ObjectCreation and + b.getLeftOperand().(PropertyAccess).getTarget().hasName("P2") and + b.getRightOperand() instanceof ObjectCreation and i.getNumberOfMemberInitializers() = 2 select i, a, b diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql index ccb17515525e..404011f18968 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql @@ -15,10 +15,10 @@ where cc.hasName("Rectangle2") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("P1") and - a.getRValue() instanceof ObjectInitializer and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("P1") and + a.getRightOperand() instanceof ObjectInitializer and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("P2") and - b.getRValue() instanceof ObjectInitializer and + b.getLeftOperand().(PropertyAccess).getTarget().hasName("P2") and + b.getRightOperand() instanceof ObjectInitializer and i.getNumberOfMemberInitializers() = 2 select m, e diff --git a/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql b/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql index 95b223ed6f4d..991fdd6e492c 100644 --- a/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql +++ b/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql @@ -9,5 +9,5 @@ where c.hasName("LoginDialog") and e.getEnclosingCallable() = c and e.getTarget().hasName("Click") and - e.getLValue().getQualifier().(FieldAccess).getTarget().hasName("CancelButton") + e.getLeftOperand().getQualifier().(FieldAccess).getTarget().hasName("CancelButton") select c, e diff --git a/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected b/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected index 0f131d8c25cb..1d15c2e61697 100644 --- a/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected +++ b/csharp/ql/test/library-tests/structuralcomparison/structuralComparison.expected @@ -56,65 +56,65 @@ gvn | StructuralComparison.cs:3:14:3:18 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:3:14:3:18 | {...} | (kind:Stmt(1)) | | StructuralComparison.cs:5:26:5:26 | access to field x | (kind:Expr(16),true,x) | -| StructuralComparison.cs:5:26:5:26 | this access | (kind:Expr(12)) | -| StructuralComparison.cs:5:26:5:30 | ... = ... | ((kind:Expr(16),true,x) :: (0 :: (kind:Expr(63)))) | +| StructuralComparison.cs:5:26:5:26 | this access | (kind:Expr(12),false,Class) | +| StructuralComparison.cs:5:26:5:30 | ... = ... | (0 :: ((kind:Expr(16),true,x) :: (kind:Expr(63)))) | | StructuralComparison.cs:5:30:5:30 | 0 | 0 | | StructuralComparison.cs:6:26:6:26 | access to field y | (kind:Expr(16),true,y) | -| StructuralComparison.cs:6:26:6:26 | this access | (kind:Expr(12)) | -| StructuralComparison.cs:6:26:6:30 | ... = ... | ((kind:Expr(16),true,y) :: (1 :: (kind:Expr(63)))) | +| StructuralComparison.cs:6:26:6:26 | this access | (kind:Expr(12),false,Class) | +| StructuralComparison.cs:6:26:6:30 | ... = ... | (1 :: ((kind:Expr(16),true,y) :: (kind:Expr(63)))) | | StructuralComparison.cs:6:30:6:30 | 1 | 1 | | StructuralComparison.cs:8:24:8:24 | 0 | 0 | | StructuralComparison.cs:9:29:9:29 | access to parameter a | (kind:Expr(15),false,a) | | StructuralComparison.cs:10:38:10:39 | access to parameter v1 | (kind:Expr(15),false,v1) | | StructuralComparison.cs:10:38:10:44 | ... + ... | ((kind:Expr(15),false,v2) :: ((kind:Expr(15),false,v1) :: (kind:Expr(44)))) | | StructuralComparison.cs:10:43:10:44 | access to parameter v2 | (kind:Expr(15),false,v2) | -| StructuralComparison.cs:14:5:17:5 | {...} | ((((kind:Expr(14),false,z2) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,z1) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1)))) | -| StructuralComparison.cs:15:9:15:23 | ... ...; | (((kind:Expr(14),false,z1) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:14:5:17:5 | {...} | (((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z2) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z1) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1)))) | +| StructuralComparison.cs:15:9:15:23 | ... ...; | ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z1) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:15:13:15:14 | access to local variable z1 | (kind:Expr(14),false,z1) | -| StructuralComparison.cs:15:13:15:22 | Int32 z1 = ... | ((kind:Expr(14),false,z1) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: (kind:Expr(83)))) | +| StructuralComparison.cs:15:13:15:22 | Int32 z1 = ... | (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z1) :: (kind:Expr(83)))) | | StructuralComparison.cs:15:18:15:18 | access to field x | (kind:Expr(16),true,x) | | StructuralComparison.cs:15:18:15:18 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:15:18:15:22 | ... + ... | ((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) | | StructuralComparison.cs:15:22:15:22 | access to field y | (kind:Expr(16),true,y) | | StructuralComparison.cs:15:22:15:22 | this access | (kind:Expr(12),false,Class) | -| StructuralComparison.cs:16:9:16:23 | ... ...; | (((kind:Expr(14),false,z2) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:16:9:16:23 | ... ...; | ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z2) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:16:13:16:14 | access to local variable z2 | (kind:Expr(14),false,z2) | -| StructuralComparison.cs:16:13:16:22 | Int32 z2 = ... | ((kind:Expr(14),false,z2) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: (kind:Expr(83)))) | +| StructuralComparison.cs:16:13:16:22 | Int32 z2 = ... | (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z2) :: (kind:Expr(83)))) | | StructuralComparison.cs:16:18:16:18 | access to field x | (kind:Expr(16),true,x) | | StructuralComparison.cs:16:18:16:18 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:16:18:16:22 | ... + ... | ((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: (kind:Expr(44)))) | | StructuralComparison.cs:16:22:16:22 | access to field y | (kind:Expr(16),true,y) | | StructuralComparison.cs:16:22:16:22 | this access | (kind:Expr(12),false,Class) | -| StructuralComparison.cs:20:5:29:5 | {...} | ((((kind:Expr(16),true,x) :: ((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Stmt(2))) :: ((((kind:Expr(16),true,x) :: ((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Stmt(2))) :: ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Stmt(2))) :: ((((kind:Expr(14),false,z7) :: ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,z6) :: (((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,z5) :: (((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,z4) :: (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,z3) :: (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1)))))))))) | -| StructuralComparison.cs:21:9:21:23 | ... ...; | (((kind:Expr(14),false,z3) :: (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:20:5:29:5 | {...} | ((((kind:Expr(16),true,x) :: ((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Stmt(2))) :: ((((kind:Expr(16),true,x) :: ((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Stmt(2))) :: ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Stmt(2))) :: ((((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z7) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (((((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) :: ((kind:Expr(14),false,z6) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (((((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z5) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (((((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z4) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (((((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z3) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1)))))))))) | +| StructuralComparison.cs:21:9:21:23 | ... ...; | ((((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z3) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:21:13:21:14 | access to local variable z3 | (kind:Expr(14),false,z3) | -| StructuralComparison.cs:21:13:21:22 | Int32 z3 = ... | ((kind:Expr(14),false,z3) :: (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) | +| StructuralComparison.cs:21:13:21:22 | Int32 z3 = ... | (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z3) :: (kind:Expr(83)))) | | StructuralComparison.cs:21:18:21:22 | call to method M1 | ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) | | StructuralComparison.cs:21:18:21:22 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:21:21:21:21 | access to field x | (kind:Expr(16),true,x) | | StructuralComparison.cs:21:21:21:21 | this access | (kind:Expr(12),false,Class) | -| StructuralComparison.cs:22:9:22:23 | ... ...; | (((kind:Expr(14),false,z4) :: (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:22:9:22:23 | ... ...; | ((((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z4) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:22:13:22:14 | access to local variable z4 | (kind:Expr(14),false,z4) | -| StructuralComparison.cs:22:13:22:22 | Int32 z4 = ... | ((kind:Expr(14),false,z4) :: (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) | +| StructuralComparison.cs:22:13:22:22 | Int32 z4 = ... | (((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z4) :: (kind:Expr(83)))) | | StructuralComparison.cs:22:18:22:22 | call to method M1 | ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) | | StructuralComparison.cs:22:18:22:22 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:22:21:22:21 | access to field x | (kind:Expr(16),true,x) | | StructuralComparison.cs:22:21:22:21 | this access | (kind:Expr(12),false,Class) | -| StructuralComparison.cs:23:9:23:23 | ... ...; | (((kind:Expr(14),false,z5) :: (((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:23:9:23:23 | ... ...; | ((((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z5) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:23:13:23:14 | access to local variable z5 | (kind:Expr(14),false,z5) | -| StructuralComparison.cs:23:13:23:22 | Int32 z5 = ... | ((kind:Expr(14),false,z5) :: (((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: (kind:Expr(83)))) | +| StructuralComparison.cs:23:13:23:22 | Int32 z5 = ... | (((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) :: ((kind:Expr(14),false,z5) :: (kind:Expr(83)))) | | StructuralComparison.cs:23:18:23:22 | call to method M1 | ((kind:Expr(16),true,y) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M1))) | | StructuralComparison.cs:23:18:23:22 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:23:21:23:21 | access to field y | (kind:Expr(16),true,y) | | StructuralComparison.cs:23:21:23:21 | this access | (kind:Expr(12),false,Class) | -| StructuralComparison.cs:24:9:24:22 | ... ...; | (((kind:Expr(14),false,z6) :: (((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:24:9:24:22 | ... ...; | ((((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) :: ((kind:Expr(14),false,z6) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:24:13:24:14 | access to local variable z6 | (kind:Expr(14),false,z6) | -| StructuralComparison.cs:24:13:24:21 | Int32 z6 = ... | ((kind:Expr(14),false,z6) :: (((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) :: (kind:Expr(83)))) | +| StructuralComparison.cs:24:13:24:21 | Int32 z6 = ... | (((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) :: ((kind:Expr(14),false,z6) :: (kind:Expr(83)))) | | StructuralComparison.cs:24:18:24:21 | call to method M0 | ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M0)) | | StructuralComparison.cs:24:18:24:21 | this access | (kind:Expr(12),false,Class) | -| StructuralComparison.cs:25:9:25:37 | ... ...; | (((kind:Expr(14),false,z7) :: ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:25:9:25:37 | ... ...; | (((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z7) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:25:13:25:14 | access to local variable z7 | (kind:Expr(14),false,z7) | -| StructuralComparison.cs:25:13:25:36 | Int32 z7 = ... | ((kind:Expr(14),false,z7) :: ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) :: (kind:Expr(83)))) | +| StructuralComparison.cs:25:13:25:36 | Int32 z7 = ... | ((((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) :: ((kind:Expr(14),false,z7) :: (kind:Expr(83)))) | | StructuralComparison.cs:25:18:25:25 | call to method M2 | ((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) | | StructuralComparison.cs:25:18:25:25 | this access | (kind:Expr(12),false,Class) | | StructuralComparison.cs:25:18:25:36 | ... + ... | (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (((kind:Expr(16),true,y) :: ((kind:Expr(16),true,x) :: ((kind:Expr(12),false,Class) :: (kind:Expr(24),false,M2)))) :: (kind:Expr(44)))) | @@ -157,35 +157,35 @@ gvn | StructuralComparison.cs:38:14:38:25 | call to method | ((kind:Expr(12),false,DerivedClass) :: (kind:Expr(24),false,)) | | StructuralComparison.cs:38:14:38:25 | this access | (kind:Expr(12),false,DerivedClass) | | StructuralComparison.cs:38:14:38:25 | {...} | (kind:Stmt(1)) | -| StructuralComparison.cs:41:5:45:5 | {...} | ((((kind:Expr(14),false,x3) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,x2) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,x1) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1))))) | -| StructuralComparison.cs:42:9:42:28 | ... ...; | (((kind:Expr(14),false,x1) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:41:5:45:5 | {...} | ((((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x3) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x2) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x1) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1))))) | +| StructuralComparison.cs:42:9:42:28 | ... ...; | (((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x1) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:42:13:42:14 | access to local variable x1 | (kind:Expr(14),false,x1) | -| StructuralComparison.cs:42:13:42:27 | Int32 x1 = ... | ((kind:Expr(14),false,x1) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) | +| StructuralComparison.cs:42:13:42:27 | Int32 x1 = ... | ((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x1) :: (kind:Expr(83)))) | | StructuralComparison.cs:42:18:42:21 | base access | (kind:Expr(13),false,BaseClass) | | StructuralComparison.cs:42:18:42:27 | access to field Field | (kind:Expr(16),true,Field) | -| StructuralComparison.cs:43:9:43:23 | ... ...; | (((kind:Expr(14),false,x2) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:43:9:43:23 | ... ...; | (((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x2) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:43:13:43:14 | access to local variable x2 | (kind:Expr(14),false,x2) | -| StructuralComparison.cs:43:13:43:22 | Int32 x2 = ... | ((kind:Expr(14),false,x2) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) | +| StructuralComparison.cs:43:13:43:22 | Int32 x2 = ... | ((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x2) :: (kind:Expr(83)))) | | StructuralComparison.cs:43:18:43:22 | access to field Field | (kind:Expr(16),true,Field) | | StructuralComparison.cs:43:18:43:22 | this access | (kind:Expr(12),false,DerivedClass) | -| StructuralComparison.cs:44:9:44:28 | ... ...; | (((kind:Expr(14),false,x3) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:44:9:44:28 | ... ...; | (((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x3) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:44:13:44:14 | access to local variable x3 | (kind:Expr(14),false,x3) | -| StructuralComparison.cs:44:13:44:27 | Int32 x3 = ... | ((kind:Expr(14),false,x3) :: ((kind:Expr(16),true,Field) :: (kind:Expr(83)))) | +| StructuralComparison.cs:44:13:44:27 | Int32 x3 = ... | ((kind:Expr(16),true,Field) :: ((kind:Expr(14),false,x3) :: (kind:Expr(83)))) | | StructuralComparison.cs:44:18:44:21 | this access | (kind:Expr(12),false,DerivedClass) | | StructuralComparison.cs:44:18:44:27 | access to field Field | (kind:Expr(16),true,Field) | -| StructuralComparison.cs:48:5:52:5 | {...} | ((((kind:Expr(14),false,y3) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,y2) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(14),false,y1) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1))))) | -| StructuralComparison.cs:49:9:49:27 | ... ...; | (((kind:Expr(14),false,y1) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:48:5:52:5 | {...} | ((((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y3) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y2) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: ((((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y1) :: (kind:Expr(83)))) :: (kind:Stmt(22))) :: (kind:Stmt(1))))) | +| StructuralComparison.cs:49:9:49:27 | ... ...; | (((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y1) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:49:13:49:14 | access to local variable y1 | (kind:Expr(14),false,y1) | -| StructuralComparison.cs:49:13:49:26 | Object y1 = ... | ((kind:Expr(14),false,y1) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) | +| StructuralComparison.cs:49:13:49:26 | Object y1 = ... | ((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y1) :: (kind:Expr(83)))) | | StructuralComparison.cs:49:18:49:21 | base access | (kind:Expr(13),false,BaseClass) | | StructuralComparison.cs:49:18:49:26 | access to property Prop | (kind:Expr(17),true,Prop) | -| StructuralComparison.cs:50:9:50:22 | ... ...; | (((kind:Expr(14),false,y2) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:50:9:50:22 | ... ...; | (((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y2) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:50:13:50:14 | access to local variable y2 | (kind:Expr(14),false,y2) | -| StructuralComparison.cs:50:13:50:21 | Object y2 = ... | ((kind:Expr(14),false,y2) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) | +| StructuralComparison.cs:50:13:50:21 | Object y2 = ... | ((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y2) :: (kind:Expr(83)))) | | StructuralComparison.cs:50:18:50:21 | access to property Prop | (kind:Expr(17),true,Prop) | | StructuralComparison.cs:50:18:50:21 | this access | (kind:Expr(12),false,DerivedClass) | -| StructuralComparison.cs:51:9:51:27 | ... ...; | (((kind:Expr(14),false,y3) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | +| StructuralComparison.cs:51:9:51:27 | ... ...; | (((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y3) :: (kind:Expr(83)))) :: (kind:Stmt(22))) | | StructuralComparison.cs:51:13:51:14 | access to local variable y3 | (kind:Expr(14),false,y3) | -| StructuralComparison.cs:51:13:51:26 | Object y3 = ... | ((kind:Expr(14),false,y3) :: ((kind:Expr(17),true,Prop) :: (kind:Expr(83)))) | +| StructuralComparison.cs:51:13:51:26 | Object y3 = ... | ((kind:Expr(17),true,Prop) :: ((kind:Expr(14),false,y3) :: (kind:Expr(83)))) | | StructuralComparison.cs:51:18:51:21 | this access | (kind:Expr(12),false,DerivedClass) | | StructuralComparison.cs:51:18:51:26 | access to property Prop | (kind:Expr(17),true,Prop) | diff --git a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantComparison.cs similarity index 52% rename from csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.cs rename to csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantComparison.cs index c31d940e7f26..26f2c4573258 100644 --- a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantComparison.cs @@ -16,16 +16,16 @@ void f() { bool good, bad; - bad = uintValue < 0; - bad = 0 > uintValue; - bad = 0 <= uintValue; - bad = uintValue >= 0; + bad = uintValue < 0; // $ Alert + bad = 0 > uintValue; // $ Alert + bad = 0 <= uintValue; // $ Alert + bad = uintValue >= 0; // $ Alert - bad = uintValue == -1; - bad = uintValue != -1; - bad = 256 == byteValue; - bad = 256 != byteValue; - bad = 1 != 0; + bad = uintValue == -1; // $ Alert + bad = uintValue != -1; // $ Alert + bad = 256 == byteValue; // $ Alert + bad = 256 != byteValue; // $ Alert + bad = 1 != 0; // $ Alert good = byteValue == 50; good = 50 != byteValue; @@ -35,61 +35,61 @@ void f() good = intValue <= 1u; good = 1u >= intValue; - good = charValue >= '0'; // Regression + good = charValue >= '0'; good = charValue < '0'; // Test ranges - bad = charValue <= 65535; - bad = charValue >= 0; + bad = charValue <= 65535; // $ Alert + bad = charValue >= 0; // $ Alert good = charValue < 255; good = charValue > 0; - bad = byteValue >= byte.MinValue; - bad = byteValue <= byte.MaxValue; + bad = byteValue >= byte.MinValue; // $ Alert + bad = byteValue <= byte.MaxValue; // $ Alert good = byteValue > byte.MinValue; good = byteValue < byte.MaxValue; - bad = sbyteValue >= sbyte.MinValue; - bad = sbyteValue <= sbyte.MaxValue; + bad = sbyteValue >= sbyte.MinValue; // $ Alert + bad = sbyteValue <= sbyte.MaxValue; // $ Alert good = sbyteValue < sbyte.MaxValue; good = sbyteValue > sbyte.MinValue; - bad = shortValue >= short.MinValue; - bad = shortValue <= short.MaxValue; + bad = shortValue >= short.MinValue; // $ Alert + bad = shortValue <= short.MaxValue; // $ Alert good = shortValue > short.MinValue; good = shortValue < short.MaxValue; - bad = ushortValue >= ushort.MinValue; - bad = ushortValue <= ushort.MaxValue; + bad = ushortValue >= ushort.MinValue; // $ Alert + bad = ushortValue <= ushort.MaxValue; // $ Alert good = ushortValue > ushort.MinValue; good = ushortValue < ushort.MaxValue; - bad = intValue >= int.MinValue; - bad = intValue <= int.MaxValue; + bad = intValue >= int.MinValue; // $ Alert + bad = intValue <= int.MaxValue; // $ Alert good = intValue > int.MinValue; good = intValue < int.MaxValue; - bad = uintValue >= uint.MinValue; + bad = uintValue >= uint.MinValue; // $ Alert good = uintValue > uint.MinValue; - bad = ulongValue >= ulong.MinValue; + bad = ulongValue >= ulong.MinValue; // $ Alert good = ulongValue > ulong.MinValue; // Explicit casts can cause large values to be truncated or // to wrap into negative values. good = (sbyte)byteValue >= 0; good = (sbyte)byteValue == -1; - bad = (sbyte)byteValue > 127; - bad = (sbyte)byteValue > (sbyte)127; + bad = (sbyte)byteValue > 127; // $ Alert + bad = (sbyte)byteValue > (sbyte)127; // $ Alert good = (int)uintValue == -1; good = (sbyte)uintValue == -1; - bad = (sbyte)uintValue == 256; + bad = (sbyte)uintValue == 256; // $ Alert System.Diagnostics.Debug.Assert(ulongValue >= ulong.MinValue); // GOOD } diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs index 0445e152ec72..95e8cd38c117 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs @@ -59,9 +59,9 @@ void M1() { switch (1 + 2) { - case 2: // $ Alert + case 2: // Intentionally missing Alert break; - case 3: // $ Alert + case 3: // Intentionally missing Alert break; case int _: // GOOD break; @@ -72,7 +72,7 @@ void M2(string s) { switch ((object)s) { - case int _: // $ Alert + case int _: // Intentionally missing Alert break; case "": // GOOD break; @@ -92,7 +92,7 @@ string M4(object o) { return o switch { - _ => o.ToString() // $ Alert + _ => o.ToString() // GOOD, catch-all pattern is fine }; } @@ -138,7 +138,7 @@ string M9(int i) { switch (i) { - case var _: // $ Alert + case var _: // GOOD, catch-all pattern is fine return "even"; } } diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected index fc310e53fded..edf1f87232e8 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected @@ -1,31 +1,47 @@ +| ConstantComparison.cs:19:15:19:27 | ... < ... | Condition always evaluates to 'false'. | ConstantComparison.cs:19:15:19:27 | ... < ... | dummy | +| ConstantComparison.cs:20:15:20:27 | ... > ... | Condition always evaluates to 'false'. | ConstantComparison.cs:20:15:20:27 | ... > ... | dummy | +| ConstantComparison.cs:21:15:21:28 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:21:15:21:28 | ... <= ... | dummy | +| ConstantComparison.cs:22:15:22:28 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:22:15:22:28 | ... >= ... | dummy | +| ConstantComparison.cs:24:15:24:29 | ... == ... | Condition always evaluates to 'false'. | ConstantComparison.cs:24:15:24:29 | ... == ... | dummy | +| ConstantComparison.cs:25:15:25:29 | ... != ... | Condition always evaluates to 'true'. | ConstantComparison.cs:25:15:25:29 | ... != ... | dummy | +| ConstantComparison.cs:26:15:26:30 | ... == ... | Condition always evaluates to 'false'. | ConstantComparison.cs:26:15:26:30 | ... == ... | dummy | +| ConstantComparison.cs:27:15:27:30 | ... != ... | Condition always evaluates to 'true'. | ConstantComparison.cs:27:15:27:30 | ... != ... | dummy | +| ConstantComparison.cs:28:15:28:20 | ... != ... | Condition always evaluates to 'true'. | ConstantComparison.cs:28:15:28:20 | ... != ... | dummy | +| ConstantComparison.cs:42:15:42:32 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:42:15:42:32 | ... <= ... | dummy | +| ConstantComparison.cs:43:15:43:28 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:43:15:43:28 | ... >= ... | dummy | +| ConstantComparison.cs:48:15:48:40 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:48:15:48:40 | ... >= ... | dummy | +| ConstantComparison.cs:49:15:49:40 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:49:15:49:40 | ... <= ... | dummy | +| ConstantComparison.cs:54:15:54:42 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:54:15:54:42 | ... >= ... | dummy | +| ConstantComparison.cs:55:15:55:42 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:55:15:55:42 | ... <= ... | dummy | +| ConstantComparison.cs:60:15:60:42 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:60:15:60:42 | ... >= ... | dummy | +| ConstantComparison.cs:61:15:61:42 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:61:15:61:42 | ... <= ... | dummy | +| ConstantComparison.cs:66:15:66:44 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:66:15:66:44 | ... >= ... | dummy | +| ConstantComparison.cs:67:15:67:44 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:67:15:67:44 | ... <= ... | dummy | +| ConstantComparison.cs:72:15:72:38 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:72:15:72:38 | ... >= ... | dummy | +| ConstantComparison.cs:73:15:73:38 | ... <= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:73:15:73:38 | ... <= ... | dummy | +| ConstantComparison.cs:78:15:78:40 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:78:15:78:40 | ... >= ... | dummy | +| ConstantComparison.cs:81:15:81:42 | ... >= ... | Condition always evaluates to 'true'. | ConstantComparison.cs:81:15:81:42 | ... >= ... | dummy | +| ConstantComparison.cs:88:15:88:36 | ... > ... | Condition always evaluates to 'false'. | ConstantComparison.cs:88:15:88:36 | ... > ... | dummy | +| ConstantComparison.cs:89:15:89:43 | ... > ... | Condition always evaluates to 'false'. | ConstantComparison.cs:89:15:89:43 | ... > ... | dummy | +| ConstantComparison.cs:92:15:92:37 | ... == ... | Condition always evaluates to 'false'. | ConstantComparison.cs:92:15:92:37 | ... == ... | dummy | | ConstantCondition.cs:38:18:38:29 | (...) ... | Expression is always 'null'. | ConstantCondition.cs:38:18:38:29 | (...) ... | dummy | | ConstantCondition.cs:39:18:39:24 | (...) ... | Expression is never 'null'. | ConstantCondition.cs:39:18:39:24 | (...) ... | dummy | | ConstantCondition.cs:46:17:46:26 | (...) ... | Expression is always 'null'. | ConstantCondition.cs:46:17:46:26 | (...) ... | dummy | | ConstantCondition.cs:47:17:47:18 | "" | Expression is never 'null'. | ConstantCondition.cs:47:17:47:18 | "" | dummy | | ConstantCondition.cs:48:13:48:19 | (...) ... | Expression is never 'null'. | ConstantCondition.cs:48:13:48:19 | (...) ... | dummy | | ConstantCondition.cs:49:13:49:14 | "" | Expression is never 'null'. | ConstantCondition.cs:49:13:49:14 | "" | dummy | -| ConstantCondition.cs:62:18:62:18 | 2 | Pattern never matches. | ConstantCondition.cs:62:18:62:18 | 2 | dummy | -| ConstantCondition.cs:64:18:64:18 | 3 | Pattern always matches. | ConstantCondition.cs:64:18:64:18 | 3 | dummy | -| ConstantCondition.cs:75:18:75:20 | access to type Int32 | Pattern never matches. | ConstantCondition.cs:75:18:75:20 | access to type Int32 | dummy | -| ConstantCondition.cs:95:13:95:13 | _ | Pattern always matches. | ConstantCondition.cs:95:13:95:13 | _ | dummy | | ConstantCondition.cs:114:13:114:14 | access to parameter b1 | Condition is always true because of $@. | ConstantCondition.cs:110:14:110:15 | access to parameter b1 | access to parameter b1 | | ConstantCondition.cs:114:19:114:20 | access to parameter b2 | Condition is always true because of $@. | ConstantCondition.cs:112:14:112:15 | access to parameter b2 | access to parameter b2 | -| ConstantCondition.cs:141:22:141:22 | _ | Pattern always matches. | ConstantCondition.cs:141:22:141:22 | _ | dummy | | ConstantConditionBad.cs:5:16:5:20 | ... > ... | Condition always evaluates to 'false'. | ConstantConditionBad.cs:5:16:5:20 | ... > ... | dummy | | ConstantConditionalExpressionCondition.cs:11:22:11:34 | ... == ... | Condition always evaluates to 'true'. | ConstantConditionalExpressionCondition.cs:11:22:11:34 | ... == ... | dummy | -| ConstantConditionalExpressionCondition.cs:12:21:12:25 | false | Condition always evaluates to 'false'. | ConstantConditionalExpressionCondition.cs:12:21:12:25 | false | dummy | | ConstantConditionalExpressionCondition.cs:13:21:13:30 | ... == ... | Condition always evaluates to 'true'. | ConstantConditionalExpressionCondition.cs:13:21:13:30 | ... == ... | dummy | -| ConstantForCondition.cs:9:29:9:33 | false | Condition always evaluates to 'false'. | ConstantForCondition.cs:9:29:9:33 | false | dummy | +| ConstantDoCondition.cs:15:22:15:34 | ... == ... | Condition always evaluates to 'true'. | ConstantDoCondition.cs:15:22:15:34 | ... == ... | dummy | +| ConstantDoCondition.cs:32:22:32:31 | ... == ... | Condition always evaluates to 'true'. | ConstantDoCondition.cs:32:22:32:31 | ... == ... | dummy | | ConstantForCondition.cs:11:29:11:34 | ... == ... | Condition always evaluates to 'false'. | ConstantForCondition.cs:11:29:11:34 | ... == ... | dummy | | ConstantIfCondition.cs:11:17:11:29 | ... == ... | Condition always evaluates to 'true'. | ConstantIfCondition.cs:11:17:11:29 | ... == ... | dummy | -| ConstantIfCondition.cs:14:17:14:21 | false | Condition always evaluates to 'false'. | ConstantIfCondition.cs:14:17:14:21 | false | dummy | | ConstantIfCondition.cs:17:17:17:26 | ... == ... | Condition always evaluates to 'true'. | ConstantIfCondition.cs:17:17:17:26 | ... == ... | dummy | -| ConstantIsNullOrEmpty.cs:10:21:10:54 | call to method IsNullOrEmpty | Condition always evaluates to 'false'. | ConstantIsNullOrEmpty.cs:10:21:10:54 | call to method IsNullOrEmpty | dummy | -| ConstantIsNullOrEmpty.cs:46:21:46:46 | call to method IsNullOrEmpty | Condition always evaluates to 'true'. | ConstantIsNullOrEmpty.cs:46:21:46:46 | call to method IsNullOrEmpty | dummy | -| ConstantIsNullOrEmpty.cs:50:21:50:44 | call to method IsNullOrEmpty | Condition always evaluates to 'true'. | ConstantIsNullOrEmpty.cs:50:21:50:44 | call to method IsNullOrEmpty | dummy | -| ConstantIsNullOrEmpty.cs:54:21:54:45 | call to method IsNullOrEmpty | Condition always evaluates to 'false'. | ConstantIsNullOrEmpty.cs:54:21:54:45 | call to method IsNullOrEmpty | dummy | +| ConstantIfCondition.cs:35:20:35:25 | ... >= ... | Condition always evaluates to 'true'. | ConstantIfCondition.cs:35:20:35:25 | ... >= ... | dummy | | ConstantNullCoalescingLeftHandOperand.cs:11:24:11:34 | access to constant NULL_OBJECT | Expression is never 'null'. | ConstantNullCoalescingLeftHandOperand.cs:11:24:11:34 | access to constant NULL_OBJECT | dummy | | ConstantNullCoalescingLeftHandOperand.cs:12:24:12:27 | null | Expression is always 'null'. | ConstantNullCoalescingLeftHandOperand.cs:12:24:12:27 | null | dummy | | ConstantWhileCondition.cs:12:20:12:32 | ... == ... | Condition always evaluates to 'true'. | ConstantWhileCondition.cs:12:20:12:32 | ... == ... | dummy | -| ConstantWhileCondition.cs:16:20:16:24 | false | Condition always evaluates to 'false'. | ConstantWhileCondition.cs:16:20:16:24 | false | dummy | | ConstantWhileCondition.cs:24:20:24:29 | ... == ... | Condition always evaluates to 'true'. | ConstantWhileCondition.cs:24:20:24:29 | ... == ... | dummy | diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantConditionalExpressionCondition.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantConditionalExpressionCondition.cs index 4cd56232627d..b84e746ae667 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantConditionalExpressionCondition.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantConditionalExpressionCondition.cs @@ -9,7 +9,7 @@ class Main public void Foo() { int i = (ZERO == 1 - 1) ? 0 : 1; // $ Alert - int j = false ? 0 : 1; // $ Alert + int j = false ? 0 : 1; // GOOD, literal false is likely intentional int k = " " == " " ? 0 : 1; // $ Alert int l = (" "[0] == ' ') ? 0 : 1; // Missing Alert int m = Bar() == 0 ? 0 : 1; // GOOD diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantDoCondition.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantDoCondition.cs index 07db7f0c0eeb..fadd44fefee3 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantDoCondition.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantDoCondition.cs @@ -12,7 +12,7 @@ public void Foo() do { break; - } while (ZERO == 1 - 1); // BAD + } while (ZERO == 1 - 1); // $ Alert do { break; @@ -29,7 +29,7 @@ public void Foo() do { break; - } while (" " == " "); // BAD + } while (" " == " "); // $ Alert do { break; diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantForCondition.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantForCondition.cs index 2da0589d1827..74bc709348a1 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantForCondition.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantForCondition.cs @@ -6,7 +6,7 @@ class Main { public void M() { - for (int i = 0; false; i++) // $ Alert + for (int i = 0; false; i++) // GOOD, literal false is likely intentional ; for (int i = 0; 0 == 1; i++) // $ Alert ; diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIfCondition.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIfCondition.cs index 04c91cc222da..8da2623e1f44 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIfCondition.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIfCondition.cs @@ -11,7 +11,7 @@ public void Foo() if (ZERO == 1 - 1) // $ Alert { } - if (false) // $ Alert + if (false) // GOOD { } if (" " == " ") // $ Alert @@ -30,6 +30,11 @@ public int Bar() return ZERO; } + public void UnsignedCheck(byte n) + { + while (n >= 0) { n--; } // $ Alert + } + } } diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIsNullOrEmpty.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIsNullOrEmpty.cs index 01e8353a20f4..97857777574a 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIsNullOrEmpty.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantIsNullOrEmpty.cs @@ -7,7 +7,10 @@ internal class Program static void Main(string[] args) { { - if (string.IsNullOrEmpty(nameof(args))) // $ Alert + // All of the IsNullOrEmpty constant checks have been descoped + // from the query as it didn't seem worth the effort to keep them. + + if (string.IsNullOrEmpty(nameof(args))) // Missing Alert (always false) { } @@ -43,15 +46,15 @@ static void Main(string[] args) { } - if (string.IsNullOrEmpty(null)) // $ Alert + if (string.IsNullOrEmpty(null)) // Missing Alert { } - if (string.IsNullOrEmpty("")) // $ Alert + if (string.IsNullOrEmpty("")) // Missing Alert { } - if (string.IsNullOrEmpty(" ")) // $ Alert + if (string.IsNullOrEmpty(" ")) // Missing Alert { } } diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantWhileCondition.cs b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantWhileCondition.cs index 59575e0de45e..f69cf1657328 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantWhileCondition.cs +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantWhileCondition.cs @@ -13,7 +13,7 @@ public void Foo() { break; } - while (false) // $ Alert + while (false) // Silly, but likely intentional { break; } diff --git a/csharp/ql/test/query-tests/Concurrency/SynchSetUnsynchGet/SynchSetUnsynchGet.cs b/csharp/ql/test/query-tests/Concurrency/SynchSetUnsynchGet/SynchSetUnsynchGet.cs index 7d90bb69b5c7..8b41604a9e67 100644 --- a/csharp/ql/test/query-tests/Concurrency/SynchSetUnsynchGet/SynchSetUnsynchGet.cs +++ b/csharp/ql/test/query-tests/Concurrency/SynchSetUnsynchGet/SynchSetUnsynchGet.cs @@ -89,4 +89,25 @@ int GoodProperty4 lock (mutex) GoodProperty3 = value; } } + + // GOOD: both getter and setter are locked. + int? property2; + int? GoodProperty5 + { + get + { + lock (mutex) + { + property2 ??= 0; + return property2; + } + } + set + { + lock (mutex) + { + property2 = value; + } + } + } } diff --git a/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected b/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected index 6271d6276c72..2073fce06a77 100644 --- a/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected +++ b/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected @@ -1,7 +1,7 @@ | DeadStoreOfLocal.cs:12:13:12:20 | Int32 x = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:12:13:12:13 | x | x | | DeadStoreOfLocal.cs:19:21:19:25 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:18:13:18:13 | x | x | | DeadStoreOfLocal.cs:44:13:44:20 | Int32 x = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:44:13:44:13 | x | x | -| DeadStoreOfLocal.cs:50:9:50:14 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:49:13:49:13 | x | x | +| DeadStoreOfLocal.cs:50:9:50:14 | ... += ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:49:13:49:13 | x | x | | DeadStoreOfLocal.cs:56:9:56:11 | ...++ | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:55:13:55:13 | x | x | | DeadStoreOfLocal.cs:82:22:82:24 | String val | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:82:22:82:24 | val | val | | DeadStoreOfLocal.cs:101:13:101:37 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:94:40:94:44 | extra | extra | diff --git a/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.cs b/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.cs index ab8588d02559..f05782416fd5 100644 --- a/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.cs +++ b/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.cs @@ -12,6 +12,8 @@ void Main(int? param) a = param ?? param; // BAD a = a ?? use(a); // BAD a = Field ?? this.Field; // BAD + a ??= a; // BAD + a ??= b = a; // BAD a = a ?? cache(ref a); // GOOD a = a ?? store(out a); // GOOD @@ -23,6 +25,7 @@ void Main(int? param) ?? a; // GOOD a = a ?? store(out a) ?? a; // GOOD + a ??= param; // GOOD } int? cache(ref int? a) diff --git a/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.expected b/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.expected index 2b68f731870e..3f4af5b8210e 100644 --- a/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.expected +++ b/csharp/ql/test/query-tests/Language Abuse/UselessNullCoalescingExpression/UselessNullCoalescingExpression.expected @@ -4,3 +4,5 @@ | UselessNullCoalescingExpression.cs:12:13:12:26 | ... ?? ... | Both operands of this null-coalescing expression access the same variable or property. | | UselessNullCoalescingExpression.cs:13:13:13:23 | ... ?? ... | Both operands of this null-coalescing expression access the same variable or property. | | UselessNullCoalescingExpression.cs:14:13:14:31 | ... ?? ... | Both operands of this null-coalescing expression access the same variable or property. | +| UselessNullCoalescingExpression.cs:15:9:15:15 | ... ??= ... | Both operands of this null-coalescing expression access the same variable or property. | +| UselessNullCoalescingExpression.cs:16:9:16:19 | ... ??= ... | Both operands of this null-coalescing expression access the same variable or property. | diff --git a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.expected b/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.expected deleted file mode 100644 index 53f55501895a..000000000000 --- a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.expected +++ /dev/null @@ -1,26 +0,0 @@ -| ConstantComparison.cs:19:15:19:27 | ... < ... | This comparison is always false. | -| ConstantComparison.cs:20:15:20:27 | ... > ... | This comparison is always false. | -| ConstantComparison.cs:21:15:21:28 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:22:15:22:28 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:24:15:24:29 | ... == ... | This comparison is always false. | -| ConstantComparison.cs:25:15:25:29 | ... != ... | This comparison is always true. | -| ConstantComparison.cs:26:15:26:30 | ... == ... | This comparison is always false. | -| ConstantComparison.cs:27:15:27:30 | ... != ... | This comparison is always true. | -| ConstantComparison.cs:28:15:28:20 | ... != ... | This comparison is always true. | -| ConstantComparison.cs:42:15:42:32 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:43:15:43:28 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:48:15:48:40 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:49:15:49:40 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:54:15:54:42 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:55:15:55:42 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:60:15:60:42 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:61:15:61:42 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:66:15:66:44 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:67:15:67:44 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:72:15:72:38 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:73:15:73:38 | ... <= ... | This comparison is always true. | -| ConstantComparison.cs:78:15:78:40 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:81:15:81:42 | ... >= ... | This comparison is always true. | -| ConstantComparison.cs:88:15:88:36 | ... > ... | This comparison is always false. | -| ConstantComparison.cs:89:15:89:43 | ... > ... | This comparison is always false. | -| ConstantComparison.cs:92:15:92:37 | ... == ... | This comparison is always false. | diff --git a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.qlref b/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.qlref deleted file mode 100644 index 8566e49f6cc0..000000000000 --- a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/ConstantComparison.qlref +++ /dev/null @@ -1 +0,0 @@ -Likely Bugs/ConstantComparison.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs new file mode 100644 index 000000000000..9655a5a0fa9c --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Threading.Tasks; + +class MissedSelectOpportunity +{ + public void M1(List lst) + { + // BAD: Can be replaced with lst.Select(i => i * i) + foreach (int i in lst) + { + int j = i * i; + Console.WriteLine(j); + } // $ Alert + } + + public async Task M2(IEnumerable counters) + { + // GOOD: Cannot use Select because the initializer contains an await expression + foreach (var counter in counters) + { + var count = await counter.CountAsync(); + Console.WriteLine(count); + } + } + + public interface ICounter + { + Task CountAsync(); + } +} diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.expected b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.expected new file mode 100644 index 000000000000..bc6d464fa3b9 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.expected @@ -0,0 +1 @@ +| MissedSelectOpportunity.cs:11:9:15:9 | foreach (... ... in ...) ... | This foreach loop immediately $@ - consider mapping the sequence explicitly using '.Select(...)'. | MissedSelectOpportunity.cs:13:13:13:26 | ... ...; | maps its iteration variable to another variable | diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.qlref b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.qlref new file mode 100644 index 000000000000..722d84896800 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.qlref @@ -0,0 +1,2 @@ +query: Linq/MissedSelectOpportunity.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/options b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/options similarity index 100% rename from csharp/ql/test/query-tests/Likely Bugs/ConstantComparison/options rename to csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/options diff --git a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.cs b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.cs index 18169e4a4b0b..10ff408e2267 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.cs @@ -33,6 +33,11 @@ public void ProcessRequest(HttpContext ctx) Microsoft.Extensions.Logging.ILogger logger2 = null; // BAD: Logged as-is logger2.LogError(username); // $ Alert + + // GOOD: uses safe extension method that sanitizes internally + logger.WarnSafe(username + " logged in"); + // BAD: uses unsafe extension method that does not sanitize + logger.WarnUnsafe(username + " logged in"); } public bool IsReusable @@ -43,3 +48,16 @@ public bool IsReusable } } } + +static class UserLoggerExtensions +{ + public static void WarnSafe(this ILogger logger, string message) + { + logger.Warn(message.ReplaceLineEndings("")); + } + + public static void WarnUnsafe(this ILogger logger, string message) + { + logger.Warn(message); // $ Alert + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected index 1820eaa07d96..994cabadc753 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected @@ -2,14 +2,18 @@ | LogForging.cs:21:21:21:43 | ... + ... | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:21:21:21:43 | ... + ... | This log entry depends on a $@. | LogForging.cs:18:27:18:49 | access to property QueryString | user-provided value | | LogForging.cs:31:50:31:72 | ... + ... | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:31:50:31:72 | ... + ... | This log entry depends on a $@. | LogForging.cs:18:27:18:49 | access to property QueryString | user-provided value | | LogForging.cs:35:26:35:33 | access to local variable username | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:35:26:35:33 | access to local variable username | This log entry depends on a $@. | LogForging.cs:18:27:18:49 | access to property QueryString | user-provided value | +| LogForging.cs:61:21:61:27 | access to parameter message | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:61:21:61:27 | access to parameter message | This log entry depends on a $@. | LogForging.cs:18:27:18:49 | access to property QueryString | user-provided value | | LogForgingAsp.cs:17:21:17:43 | ... + ... | LogForgingAsp.cs:13:32:13:39 | username : String | LogForgingAsp.cs:17:21:17:43 | ... + ... | This log entry depends on a $@. | LogForgingAsp.cs:13:32:13:39 | username | user-provided value | edges | LogForging.cs:18:16:18:23 | access to local variable username : String | LogForging.cs:21:21:21:43 | ... + ... | provenance | | | LogForging.cs:18:16:18:23 | access to local variable username : String | LogForging.cs:31:50:31:72 | ... + ... | provenance | | | LogForging.cs:18:16:18:23 | access to local variable username : String | LogForging.cs:35:26:35:33 | access to local variable username | provenance | | +| LogForging.cs:18:16:18:23 | access to local variable username : String | LogForging.cs:40:27:40:49 | ... + ... : String | provenance | | | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:18:16:18:23 | access to local variable username : String | provenance | | | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:18:27:18:61 | access to indexer : String | provenance | MaD:1 | | LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:18:16:18:23 | access to local variable username : String | provenance | | +| LogForging.cs:40:27:40:49 | ... + ... : String | LogForging.cs:59:63:59:69 | message : String | provenance | | +| LogForging.cs:59:63:59:69 | message : String | LogForging.cs:61:21:61:27 | access to parameter message | provenance | | | LogForgingAsp.cs:13:32:13:39 | username : String | LogForgingAsp.cs:17:21:17:43 | ... + ... | provenance | | models | 1 | Summary: System.Collections.Specialized; NameValueCollection; false; get_Item; (System.String); ; Argument[this]; ReturnValue; taint; df-generated | @@ -20,6 +24,9 @@ nodes | LogForging.cs:21:21:21:43 | ... + ... | semmle.label | ... + ... | | LogForging.cs:31:50:31:72 | ... + ... | semmle.label | ... + ... | | LogForging.cs:35:26:35:33 | access to local variable username | semmle.label | access to local variable username | +| LogForging.cs:40:27:40:49 | ... + ... : String | semmle.label | ... + ... : String | +| LogForging.cs:59:63:59:69 | message : String | semmle.label | message : String | +| LogForging.cs:61:21:61:27 | access to parameter message | semmle.label | access to parameter message | | LogForgingAsp.cs:13:32:13:39 | username : String | semmle.label | username : String | | LogForgingAsp.cs:17:21:17:43 | ... + ... | semmle.label | ... + ... | subpaths diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs index 981b36002663..01c770d105b4 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs @@ -1,16 +1,24 @@ using System; +using System.Text; class RedundantToString { public void M(object o) { - Console.WriteLine(o.ToString()); // BAD + Console.WriteLine(o.ToString()); // $ Alert Console.WriteLine(o); // GOOD - Console.WriteLine($"Hello: {o.ToString()}"); // BAD + Console.WriteLine($"Hello: {o.ToString()}"); // $ Alert Console.WriteLine($"Hello: {o}"); // GOOD - Console.WriteLine("Hello: " + o.ToString()); // BAD + Console.WriteLine("Hello: " + o.ToString()); // $ Alert Console.WriteLine("Hello: " + o); // GOOD + + var sb = new StringBuilder(); + sb.Append(o.ToString()); // $ Alert + sb.Append(o); // GOOD + sb.AppendLine(o.ToString()); // GOOD + + Console.WriteLine($"Hello: {base.ToString()}"); // GOOD } } diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected index 28775378f049..b81421da571f 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected @@ -1,4 +1,5 @@ -| RedundantToStringCall.cs:7:27:7:38 | call to method ToString | Redundant call to 'ToString' on a String object. | -| RedundantToStringCall.cs:10:37:10:48 | call to method ToString | Redundant call to 'ToString' on a String object. | -| RedundantToStringCall.cs:13:39:13:50 | call to method ToString | Redundant call to 'ToString' on a String object. | -| RedundantToStringCallBad.cs:7:45:7:56 | call to method ToString | Redundant call to 'ToString' on a String object. | +| RedundantToStringCall.cs:8:27:8:38 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCall.cs:11:37:11:48 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCall.cs:14:39:14:50 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCall.cs:18:19:18:30 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCallBad.cs:7:45:7:56 | call to method ToString | Redundant call to 'ToString'. | diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref index c0ee8dd0ec7d..86bf1476007d 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref @@ -1 +1,3 @@ -Useless code/RedundantToStringCall.ql \ No newline at end of file +query: Useless code/RedundantToStringCall.ql +postprocess: + - utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs index d6d043f23762..ed5cd137a855 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs @@ -4,6 +4,6 @@ class Bad { static string Hello(object o) { - return string.Format("Hello, {0}!", o.ToString()); + return string.Format("Hello, {0}!", o.ToString()); // $ Alert } } diff --git a/csharp/ql/test/query-tests/WriteOnlyContainer/WriteOnlyContainer.cs b/csharp/ql/test/query-tests/WriteOnlyContainer/WriteOnlyContainer.cs index 97c33685a954..6d870cad08bf 100644 --- a/csharp/ql/test/query-tests/WriteOnlyContainer/WriteOnlyContainer.cs +++ b/csharp/ql/test/query-tests/WriteOnlyContainer/WriteOnlyContainer.cs @@ -307,4 +307,10 @@ void OutTest() { Out(out var strings); // BAD: but allow for now (only C# 7 allows discards) } + + IList TestNullcoalescingInitializations() + { + var l = new List { 1, 2, 3 }; // GOOD: returned + return l ??= new List(); + } } diff --git a/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs b/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs index 6f40759b3e67..caf9d85b6532 100644 --- a/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs +++ b/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.cs @@ -12,7 +12,7 @@ class ConstantMatching void M1() { var c1 = new C1(); - if (c1.Prop is int) // $ Alert + if (c1.Prop is int) // Descoped, no longer reported by the query. { } diff --git a/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected b/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected index b00cfb3115ef..e69de29bb2d1 100644 --- a/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected +++ b/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected @@ -1,2 +0,0 @@ -| ConstantCondition.cs:15:13:15:26 | ... is ... | Condition always evaluates to 'false'. | ConstantCondition.cs:15:13:15:26 | ... is ... | dummy | -| ConstantCondition.cs:15:24:15:26 | access to type Int32 | Pattern never matches. | ConstantCondition.cs:15:24:15:26 | access to type Int32 | dummy | diff --git a/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs b/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs index b59513504d9d..4c85b397ac1f 100644 --- a/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs +++ b/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs @@ -536,6 +536,12 @@ public void Apply(Action a, object o) { a(o); } + + private void CallApply() + { + // Test that this call to `Apply` does not interfere with the flow summaries generated for `Apply` + Apply(x => x, null); + } } public static class HigherOrderExtensionMethods diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.1.rst index f2948d0db67c..39d4d36537cf 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.1.rst @@ -129,7 +129,7 @@ Java/Kotlin """"""""""" * The Java extractor and QL libraries now support Java 23. -* Kotlin versions up to 2.1.0\ *x* are now supported. +* Kotlin versions up to 2.1.0*x* are now supported. Python """""" diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.3.rst index 71a8e3a68240..fffe94c04b80 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.3.rst @@ -144,7 +144,7 @@ New Features Java/Kotlin """"""""""" -* Kotlin versions up to 2.2.0\ *x* are now supported. Support for the Kotlin 1.5.x series is dropped (so the minimum Kotlin version is now 1.6.0). +* Kotlin versions up to 2.2.0*x* are now supported. Support for the Kotlin 1.5.x series is dropped (so the minimum Kotlin version is now 1.6.0). Swift """"" diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.3.rst index 4f1d34ff2ddd..8e5a18a0c74a 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.3.rst @@ -98,4 +98,4 @@ C/C++ Java/Kotlin """"""""""" -* Kotlin versions up to 2.2.2\ *x* are now supported. +* Kotlin versions up to 2.2.2*x* are now supported. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.3.rst new file mode 100644 index 000000000000..7c4f99e10d23 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.3.rst @@ -0,0 +1,121 @@ +.. _codeql-cli-2.24.3: + +========================== +CodeQL 2.24.3 (2026-03-05) +========================== + +.. 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.24.3 runs a total of 491 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). + +CodeQL CLI +---------- + +Bug Fixes +~~~~~~~~~ + +* Fixed a race condition that could cause flaky failures in overlay CodeQL tests. Test extraction now skips :code:`*.testproj` directories by name, preventing interference from concurrently cleaned-up test databases. +* Fixed spurious "OOPS" warnings that could appear in help output for commands using mutually exclusive option groups, such as :code:`codeql query run`. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The Java extractor and QL libraries now support Java 26. +* Java analysis now selects the Java version to use informed by Maven POM files across all project modules. It also tries to use Java 17 or higher for all Maven projects if possible, for improved build compatibility. + +Rust +"""" + +* The macro resolution metric has been removed from :code:`rust/diagnostic/database-quality`. This metric was found to be an unreliable indicator of database quality in many cases, leading to false alarms on the tool status page. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +C/C++ +""""" + +* The :code:`allowInterproceduralFlow` predicate of must-flow data flow configurations now correctly handles direct recursion. + +C# +"" + +* Fixed an issue where the body of a partial member could be extracted twice. When both a *defining* and an *implementing* declaration exist, only the *implementing* declaration is now extracted. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* CodeQL version 2.24.2 accidentally introduced a syntactical breaking change to :code:`BarrierGuard<...>::getAnIndirectBarrierNode` and :code:`InstructionBarrierGuard<...>::getAnIndirectBarrierNode`. These breaking changes have now been reverted so that the original code compiles again. +* :code:`MustFlow`, the inter-procedural must-flow data flow analysis library, has been re-worked to use parameterized modules. Like in the case of data flow and taint tracking, instead of extending the :code:`MustFlowConfiguration` class, the user should now implement a module with the :code:`MustFlow::ConfigSig` signature, and instantiate the :code:`MustFlow::Global` parameterized module with the implemented module. + +Python +"""""" + +* The :code:`Metrics` library no longer contains code that depends on the points-to analysis. The removed functionality has instead been moved to the :code:`LegacyPointsTo` module, to classes like :code:`ModuleMetricsWithPointsTo` etc. If you depend on any of these classes, you must now remember to import :code:`LegacyPointsTo`, and use the appropriate types in order to use the points-to-based functionality. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Python +"""""" + +* The CodeQL Python libraries have been updated to be compatible with overlay evaluation. This should result in a significant speedup on analyses for which a base database already exists. Note that it may be necessary to add :code:`overlay[local?] module;` to user-managed libraries that extend classes that are now marked as :code:`overlay[local]`. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Refactored the "Year field changed using an arithmetic operation without checking for leap year" query (:code:`cpp/leap-year/unchecked-after-arithmetic-year-modification`) to address large numbers of false positive results. + +C# +"" + +* C# 14: Added support for partial events. +* C# 14: Added support for the :code:`field` keyword in properties. + +Java/Kotlin +""""""""""" + +* Some modelling which previously only worked for Java EE packages beginning with "javax" will now also work for Java EE packages beginning with "jakarta" as well. This may lead to some alert changes. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added support for React components wrapped by :code:`observer` from :code:`mobx-react` and :code:`mobx-react-lite`. + +Python +"""""" + +* Added new full SSRF sanitization barrier from the new AntiSSRF library. +* When a guard such as :code:`isSafe(x)` is defined, we now also automatically handle :code:`isSafe(x) == true` and :code:`isSafe(x) != false`. + +Ruby +"""" + +* We now track taint flow through :code:`Shellwords.escape` and :code:`Shellwords.shellescape` for all queries except command injection, for which they are sanitizers. + +Rust +"""" + +* Added support for neutral models (:code:`extensible: neutralModel`) to control where generated source, sink and flow summary models apply. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.0.rst new file mode 100644 index 000000000000..7c371a3a365c --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.0.rst @@ -0,0 +1,131 @@ +.. _codeql-cli-2.25.0: + +========================== +CodeQL 2.25.0 (2026-03-19) +========================== + +.. 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.25.0 runs a total of 491 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* :code:`codeql database interpret-results` and :code:`codeql database analyze` no longer attempt to reconstruct file baseline information from databases created with CLI versions before 2.11.2. + +Bug Fixes +~~~~~~~~~ + +* Upgraded Jackson library from 2.16.1 to 2.18.6 to address a high-severity denial of service vulnerability (GHSA-72hv-8253-57qq) in jackson-core's async JSON parser. +* Upgraded snakeyaml (which is a dependency of jackson-dataformat-yaml) from 2.2 to 2.3. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The Java control flow graph (CFG) implementation has been completely rewritten. 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 now only includes the nodes that are reachable from the entry point. + Additionally, the following breaking changes have been made: + + * :code:`ControlFlowNode.asCall` has been removed - use :code:`Call.getControlFlowNode` instead. + * :code:`ControlFlowNode.getEnclosingStmt` has been removed. + * :code:`ControlFlow::ExprNode` has been removed. + * :code:`ControlFlow::StmtNode` has been removed. + * :code:`ControlFlow::Node` has been removed - this was merely an alias of + :code:`ControlFlowNode`, which is still available. + * Previously deprecated predicates on :code:`BasicBlock` have been removed. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.2.4. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. + +C# +"" + +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. +* Added :code:`System.Net.WebSockets::ReceiveAsync` as a remote flow source. +* Added reverse taint flow from implicit conversion operator calls to their arguments. +* Added post-update nodes for struct-type arguments, allowing data flow out of method calls via those arguments. +* C# 14: Added support for partial constructors. + +Golang +"""""" + +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. + +Java/Kotlin +""""""""""" + +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. +* The class :code:`Assignment` now extends :code:`BinaryExpr`. Uses of :code:`BinaryExpr` may in some cases need slight adjustment. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added support for browser-specific source kinds (:code:`browser`, :code:`browser-url-query`, :code:`browser-url-fragment`, :code:`browser-url-path`, :code:`browser-url`, :code:`browser-window-name`, :code:`browser-message-event`) that can be used in data extensions to model sources in browser environments. +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. + +Python +"""""" + +* The call graph resolution no longer considers methods marked using |link-code-typing-overload-1|_ as valid targets. This ensures that only the method that contains the actual implementation gets resolved as a target. +* Inline expectations test comments, which are of the form :code:`# $ tag` or :code:`# $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. + +Ruby +"""" + +* Inline expectations test comments, which are of the form :code:`# $ tag` or :code:`# $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. + +Swift +""""" + +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. + +Rust +"""" + +* Inline expectations test comments, which are of the form :code:`// $ tag` or :code:`// $ tag=value`, are now parsed more strictly and will not be recognized if there isn't a space after the :code:`$` symbol. +* Added neutral models to inhibit spurious generated sink models for :code:`map` and :code:`from`. This fixes some false positive query results. + +Shared Libraries +---------------- + +New Features +~~~~~~~~~~~~ + +Dataflow Analysis +""""""""""""""""" + +* Two new flow features :code:`FeatureEscapesSourceCallContext` and :code:`FeatureEscapesSourceCallContextOrEqualSourceSinkCallContext` have been added. The former implies that the sink must be reached from the source by escaping the source call context, that is, flow must either return from the callable containing the source or use a jump-step before reaching the sink. The latter is the disjunction of the former and the existing :code:`FeatureEqualSourceSinkCallContext` flow feature. + +.. |link-code-typing-overload-1| replace:: :code:`@typing.overload`\ +.. _link-code-typing-overload-1: https://typing.python.org/en/latest/spec/overload.html#overloads + diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.1.rst new file mode 100644 index 000000000000..1164b8d90c3a --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.1.rst @@ -0,0 +1,30 @@ +.. _codeql-cli-2.25.1: + +========================== +CodeQL 2.25.1 (2026-03-27) +========================== + +.. 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.25.1 runs a total of 491 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). + +CodeQL CLI +---------- + +Bug Fixes +~~~~~~~~~ + +* Fixed a bug where extraction could fail on YAML files containing emoji. + +Miscellaneous +~~~~~~~~~~~~~ + +* Upgraded snakeyaml (which is a dependency of jackson-dataformat-yaml) from 2.3 to 2.6. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.2.rst new file mode 100644 index 000000000000..58c6a7245d2b --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.2.rst @@ -0,0 +1,157 @@ +.. _codeql-cli-2.25.2: + +========================== +CodeQL 2.25.2 (2026-04-15) +========================== + +.. 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.25.2 runs a total of 492 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 1 security query has been added with this release. + +CodeQL CLI +---------- + +Miscellaneous +~~~~~~~~~~~~~ + +* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 21.0.10. + +Query Packs +----------- + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The :code:`cs/constant-condition` query has been simplified. The query no longer reports trivially constant conditions as they were found to generally be intentional. As a result, it should now produce fewer false positives. Additionally, the simplification means that it now reports all the results that :code:`cs/constant-comparison` used to report, and as consequence, that query has been deleted. + +Python +"""""" + +* Several quality queries have been ported away from using the legacy points-to library. This may lead to changes in alerts. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The "Extraction warnings" (:code:`cpp/diagnostics/extraction-warnings`) diagnostics query no longer yields :code:`ExtractionRecoverableWarning`\ s for :code:`build-mode: none` databases. The results were found to significantly increase the sizes of the produced SARIF files, making them unprocessable in some cases. +* Fixed an issue with the "Suspicious add with sizeof" (:code:`cpp/suspicious-add-sizeof`) query causing false positive results in :code:`build-mode: none` databases. +* Fixed an issue with the "Uncontrolled format string" (:code:`cpp/tainted-format-string`) query involving certain kinds of formatting function implementations. +* Fixed an issue with the "Wrong type of arguments to formatting function" (:code:`cpp/wrong-type-format-argument`) query causing false positive results in :code:`build-mode: none` databases. +* Fixed an issue with the "Multiplication result converted to larger type" (:code:`cpp/integer-multiplication-cast-to-long`) query causing false positive results in :code:`build-mode: none` databases. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The :code:`@security-severity` metadata of :code:`cpp/cgi-xss` has been increased from 6.1 (medium) to 7.8 (high). + +C# +"" + +* The :code:`@security-severity` metadata of :code:`cs/log-forging` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`cs/web/xss` has been increased from 6.1 (medium) to 7.8 (high). + +Golang +"""""" + +* The :code:`@security-severity` metadata of :code:`go/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`go/html-template-escaping-bypass-xss`, :code:`go/reflected-xss` and :code:`go/stored-xss` has been increased from 6.1 (medium) to 7.8 (high). + +Java/Kotlin +""""""""""" + +* The :code:`@security-severity` metadata of :code:`java/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`java/android/webview-addjavascriptinterface`, :code:`java/android/websettings-javascript-enabled` and :code:`java/xss` has been increased from 6.1 (medium) to 7.8 (high). + +Python +"""""" + +* The :code:`@security-severity` metadata of :code:`py/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`py/jinja2/autoescape-false` and :code:`py/reflective-xss` has been increased from 6.1 (medium) to 7.8 (high). + +Ruby +"""" + +* The :code:`@security-severity` metadata of :code:`rb/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`rb/reflected-xss`, :code:`rb/stored-xss` and :code:`rb/html-constructed-from-input` has been increased from 6.1 (medium) to 7.8 (high). + +Swift +""""" + +* The :code:`@security-severity` metadata of :code:`swift/unsafe-webview-fetch` has been increased from 6.1 (medium) to 7.8 (high). + +Rust +"""" + +* The :code:`@security-severity` metadata of :code:`rust/log-injection` has been increased from 2.6 (low) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`rust/xss` has been increased from 6.1 (medium) to 7.8 (high). + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +Python +"""""" + +* Fixed the resolution of relative imports such as :code:`from . import helper` inside namespace packages (directories without an :code:`__init__.py` file), which previously did not work correctly, leading to missing flow. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The :code:`SourceModelCsv`, :code:`SinkModelCsv`, and :code:`SummaryModelCsv` classes and the associated CSV parsing infrastructure have been removed from :code:`ExternalFlow.qll`. New models should be added as :code:`.model.yml` files in the :code:`ext/` directory. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added :code:`HttpReceiveHttpRequest`, :code:`HttpReceiveRequestEntityBody`, and :code:`HttpReceiveClientCertificate` from Win32's :code:`http.h` as remote flow sources. +* Added dataflow through members initialized via non-static data member initialization (NSDMI). + +C# +"" + +* The extractor no longer synthesizes expanded forms of compound assignments. This may have a small impact on the results of queries that explicitly or implicitly rely on the expanded form of compound assignments. +* The :code:`cs/log-forging` query no longer treats arguments to extension methods with source code on :code:`ILogger` types as sinks. Instead, taint is tracked interprocedurally through extension method bodies, reducing false positives when extension methods sanitize input internally. + +Java/Kotlin +""""""""""" + +* The :code:`java/tainted-arithmetic` query no longer flags arithmetic expressions that are used directly as an operand of a comparison in :code:`if`\ -condition bounds-checking patterns. For example, :code:`if (off + len > array.length)` is now recognized as a bounds check rather than a potentially vulnerable computation, reducing false positives. +* The :code:`java/potentially-weak-cryptographic-algorithm` query no longer flags Elliptic Curve algorithms (:code:`EC`, :code:`ECDSA`, :code:`ECDH`, :code:`EdDSA`, :code:`Ed25519`, :code:`Ed448`, :code:`XDH`, :code:`X25519`, :code:`X448`), HMAC-based algorithms (:code:`HMACSHA1`, :code:`HMACSHA256`, :code:`HMACSHA384`, :code:`HMACSHA512`), or PBKDF2 key derivation as potentially insecure. These are modern, secure algorithms recommended by NIST and other standards bodies. This will reduce the number of false positives for this query. +* The first argument of the method :code:`getInstance` of :code:`java.security.Signature` is now modeled as a sink for :code:`java/potentially-weak-cryptographic-algorithm`, :code:`java/weak-cryptographic-algorithm` and :code:`java/rsa-without-oaep`. This will increase the number of alerts for these queries. +* Kotlin versions up to 2.3.20 are now supported. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added a subclass :code:`MesonPrivateTestFile` of :code:`ConfigurationTestFile` that represents files created by Meson to test the build configuration. +* Added a class :code:`ConstructorDirectFieldInit` to represent field initializations that occur in member initializer lists. +* Added a class :code:`ConstructorDefaultFieldInit` to represent default field initializations. +* Added a class :code:`DataFlow::IndirectParameterNode` to represent the indirection of a parameter as a dataflow node. +* Added a predicate :code:`Node::asIndirectInstruction` which returns the :code:`Instruction` that defines the indirect dataflow node, if any. +* Added a class :code:`IndirectUninitializedNode` to represent the indirection of an uninitialized local variable as a dataflow node. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 21671f1c9696..32a8b4574bb8 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,10 @@ A list of queries for each suite and language `is available here { predicate uniqueNodeLocationExclude(DataFlow::Node n) { missingLocationExclude(n) } - predicate localFlowIsLocalExclude(DataFlow::Node n1, DataFlow::Node n2) { - n1 instanceof DataFlow::FunctionNode and simpleLocalFlowStep(n1, n2, _) - } - predicate argHasPostUpdateExclude(DataFlow::ArgumentNode n) { not DataFlow::insnHasPostUpdateNode(n.asInstruction()) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll index 33149bf00575..2c5c64ace7d5 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -95,10 +95,6 @@ predicate basicLocalFlowStep(Node nodeFrom, Node nodeTo) { nodeTo = instructionNode(succ) and nodeTo != nodeFrom ) - or - // GlobalFunctionNode -> use - nodeFrom = - any(GlobalFunctionNode fn | fn.getFunction() = nodeTo.asExpr().(FunctionName).getTarget()) } pragma[noinline] diff --git a/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll b/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll index 5d43cf674c1c..ab2a241e14a6 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll @@ -35,7 +35,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string package, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index 240665bd492d..ff727286c3b4 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -174,13 +174,13 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingvalue, kind, + barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance, model) and e = interpretElement(package, type, subtypes, name, signature, ext) ) diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll b/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll index b071e56cbb53..cfd8a8aee232 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll @@ -20,10 +20,13 @@ module IoFs { private class WalkDirStep extends TaintTracking::AdditionalTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { //signature: func WalkDir(fsys FS, root string, fn WalkDirFunc) error - exists(DataFlow::CallNode call, DataFlow::FunctionNode f | - call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and - f.getASuccessor*() = call.getArgument(2) + exists(DataFlow::CallNode call, DataFlow::FunctionNode f, DataFlow::Node n | + n = f.(DataFlow::FuncLitNode) + or + n.asExpr().(FunctionName).getTarget() = f.(DataFlow::GlobalFunctionNode).getFunction() | + call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and + n.getASuccessor*() = call.getArgument(2) and pred = call.getArgument(0) and succ = f.getParameter([0, 1]) ) diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 83e764ea9d39..2bc95cc19222 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 1.6.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `go/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `go/html-template-escaping-bypass-xss`, `go/reflected-xss` and `go/stored-xss` has been increased from 6.1 (medium) to 7.8 (high). + +## 1.5.10 + +No user-facing changes. + +## 1.5.9 + +No user-facing changes. + ## 1.5.8 No user-facing changes. diff --git a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql index 15373ee85edf..f556630965c7 100644 --- a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql +++ b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql @@ -5,7 +5,7 @@ * scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id go/html-template-escaping-bypass-xss * @tags security diff --git a/go/ql/src/Security/CWE-079/ReflectedXss.ql b/go/ql/src/Security/CWE-079/ReflectedXss.ql index 0fca12ac2858..ebabb69f0a4e 100644 --- a/go/ql/src/Security/CWE-079/ReflectedXss.ql +++ b/go/ql/src/Security/CWE-079/ReflectedXss.ql @@ -4,7 +4,7 @@ * a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id go/reflected-xss * @tags security diff --git a/go/ql/src/Security/CWE-079/StoredXss.ql b/go/ql/src/Security/CWE-079/StoredXss.ql index 83628b310421..dcae0a5f9c1d 100644 --- a/go/ql/src/Security/CWE-079/StoredXss.ql +++ b/go/ql/src/Security/CWE-079/StoredXss.ql @@ -4,7 +4,7 @@ * a stored cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision low * @id go/stored-xss * @tags security diff --git a/go/ql/src/Security/CWE-117/LogInjection.ql b/go/ql/src/Security/CWE-117/LogInjection.ql index 5b6586c8e4e2..08febfd842e8 100644 --- a/go/ql/src/Security/CWE-117/LogInjection.ql +++ b/go/ql/src/Security/CWE-117/LogInjection.ql @@ -4,7 +4,7 @@ * insertion of forged log entries by a malicious user. * @kind path-problem * @problem.severity error - * @security-severity 7.8 + * @security-severity 6.1 * @precision medium * @id go/log-injection * @tags security diff --git a/go/ql/src/change-notes/released/1.5.10.md b/go/ql/src/change-notes/released/1.5.10.md new file mode 100644 index 000000000000..829c5f1f1a1a --- /dev/null +++ b/go/ql/src/change-notes/released/1.5.10.md @@ -0,0 +1,3 @@ +## 1.5.10 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.5.9.md b/go/ql/src/change-notes/released/1.5.9.md new file mode 100644 index 000000000000..be9d418e5986 --- /dev/null +++ b/go/ql/src/change-notes/released/1.5.9.md @@ -0,0 +1,3 @@ +## 1.5.9 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.6.0.md b/go/ql/src/change-notes/released/1.6.0.md new file mode 100644 index 000000000000..1e508254885a --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.0.md @@ -0,0 +1,6 @@ +## 1.6.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `go/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `go/html-template-escaping-bypass-xss`, `go/reflected-xss` and `go/stored-xss` has been increased from 6.1 (medium) to 7.8 (high). diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index d26e0a527640..c4f0b07d5336 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.8 +lastReleaseVersion: 1.6.0 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 2d0bef9e155e..de4e5e06d381 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.5.8 +version: 1.6.1-dev groups: - go - queries 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 fcbb78716a46..7fa8b681d7f3 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,52 +1,3 @@ -| file://:0:0:0:0 | function Encode | url.go:51:14:51:21 | selection of Encode | -| file://:0:0:0:0 | function EscapedPath | url.go:28:14:28:26 | selection of EscapedPath | -| file://:0:0:0:0 | function Get | url.go:52:14:52:18 | selection of Get | -| file://:0:0:0:0 | function Hostname | url.go:29:14:29:23 | selection of Hostname | -| file://:0:0:0:0 | function JoinPath | url.go:57:16:57:27 | selection of JoinPath | -| file://:0:0:0:0 | function JoinPath | url.go:58:16:58:27 | selection of JoinPath | -| file://:0:0:0:0 | function JoinPath | url.go:60:15:60:28 | selection of JoinPath | -| file://:0:0:0:0 | function JoinPath | url.go:66:9:66:25 | selection of JoinPath | -| file://:0:0:0:0 | function MarshalBinary | url.go:30:11:30:25 | selection of MarshalBinary | -| file://:0:0:0:0 | function Parse | url.go:23:10:23:18 | selection of Parse | -| file://:0:0:0:0 | function Parse | url.go:32:9:32:15 | selection of Parse | -| file://:0:0:0:0 | function Parse | url.go:59:14:59:22 | selection of Parse | -| file://:0:0:0:0 | function Parse | url.go:65:17:65:25 | selection of Parse | -| file://:0:0:0:0 | function ParseQuery | url.go:50:10:50:23 | selection of ParseQuery | -| file://:0:0:0:0 | function ParseRequestURI | url.go:27:9:27:27 | selection of ParseRequestURI | -| file://:0:0:0:0 | function Password | url.go:43:11:43:21 | selection of Password | -| file://:0:0:0:0 | function PathEscape | url.go:12:31:12:44 | selection of PathEscape | -| file://:0:0:0:0 | function PathUnescape | url.go:12:14:12:29 | selection of PathUnescape | -| file://:0:0:0:0 | function Port | url.go:33:14:33:19 | selection of Port | -| file://:0:0:0:0 | function Println | url.go:28:2:28:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:29:2:29:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:31:2:31:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:33:2:33:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:34:2:34:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:35:2:35:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:44:2:44:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:45:2:45:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:51:2:51:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:52:2:52:12 | selection of Println | -| file://:0:0:0:0 | function Query | url.go:34:14:34:20 | selection of Query | -| file://:0:0:0:0 | function QueryEscape | url.go:14:32:14:46 | selection of QueryEscape | -| file://:0:0:0:0 | function QueryUnescape | url.go:14:14:14:30 | selection of QueryUnescape | -| file://:0:0:0:0 | function Replace | strings.go:9:8:9:22 | selection of Replace | -| file://:0:0:0:0 | function ReplaceAll | strings.go:10:8:10:25 | selection of ReplaceAll | -| file://:0:0:0:0 | function RequestURI | url.go:35:14:35:25 | selection of RequestURI | -| file://:0:0:0:0 | function ResolveReference | url.go:36:6:36:23 | selection of ResolveReference | -| file://:0:0:0:0 | function Sprint | strings.go:11:9:11:18 | selection of Sprint | -| file://:0:0:0:0 | function Sprintf | strings.go:11:30:11:40 | selection of Sprintf | -| file://:0:0:0:0 | function Sprintln | strings.go:11:54:11:65 | selection of Sprintln | -| file://:0:0:0:0 | function User | url.go:41:8:41:15 | selection of User | -| file://:0:0:0:0 | function UserPassword | url.go:42:7:42:22 | selection of UserPassword | -| file://:0:0:0:0 | function Username | url.go:45:14:45:24 | selection of Username | -| file://:0:0:0:0 | function append | main.go:39:8:39:13 | append | -| file://:0:0:0:0 | function append | main.go:40:8:40:13 | append | -| file://:0:0:0:0 | function copy | main.go:42:2:42:5 | copy | -| file://:0:0:0:0 | function make | main.go:41:8:41:11 | make | -| file://:0:0:0:0 | function max | main.go:65:7:65:9 | max | -| file://:0:0:0:0 | function min | main.go:64:7:64:9 | min | -| main.go:3:6:3:10 | function test1 | main.go:34:2:34:6 | test1 | | main.go:3:12:3:12 | argument corresponding to x | main.go:3:12:3:12 | definition of x | | main.go:3:12:3:12 | definition of x | main.go:5:5:5:5 | x | | main.go:3:19:3:20 | argument corresponding to fn | main.go:3:19:3:20 | definition of fn | @@ -66,8 +17,6 @@ | 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:11:14:11:14 | z | main.go:11:9:11:15 | type conversion | -| main.go:14:6:14:10 | function test2 | main.go:34:8:34:12 | test2 | -| main.go:14:6:14:10 | function test2 | main.go:34:19:34:23 | test2 | | main.go:15:9:15:9 | 0 | main.go:15:2:15:4 | definition of acc | | main.go:16:9:19:2 | capture variable acc | main.go:17:3:17:5 | acc | | main.go:17:3:17:7 | definition of acc | main.go:18:10:18:12 | acc | 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 5908aa8d113e..3767cd57b5d1 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,83 +1,3 @@ -| main.go:3:6:3:11 | function source | main.go:23:31:23:36 | source | -| main.go:3:6:3:11 | function source | main.go:31:31:31:36 | source | -| main.go:3:6:3:11 | function source | main.go:40:30:40:35 | source | -| main.go:3:6:3:11 | function source | main.go:46:32:46:37 | source | -| main.go:3:6:3:11 | function source | main.go:54:17:54:22 | source | -| main.go:3:6:3:11 | function source | main.go:62:18:62:23 | source | -| main.go:3:6:3:11 | function source | main.go:72:17:72:22 | source | -| main.go:3:6:3:11 | function source | main.go:80:18:80:23 | source | -| main.go:3:6:3:11 | function source | main.go:91:16:91:21 | source | -| main.go:3:6:3:11 | function source | main.go:98:17:98:22 | source | -| main.go:3:6:3:11 | function source | main.go:107:22:107:27 | source | -| main.go:3:6:3:11 | function source | main.go:114:23:114:28 | source | -| main.go:3:6:3:11 | function source | main.go:123:23:123:28 | source | -| main.go:3:6:3:11 | function source | main.go:130:24:130:29 | source | -| main.go:3:6:3:11 | function source | main.go:139:29:139:34 | source | -| main.go:3:6:3:11 | function source | main.go:146:30:146:35 | source | -| main.go:7:6:7:9 | function sink | main.go:25:2:25:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:26:2:26:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:27:2:27:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:28:2:28:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:33:2:33:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:34:2:34:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:35:2:35:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:36:2:36:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:41:2:41:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:42:2:42:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:43:2:43:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:44:2:44:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:47:2:47:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:48:2:48:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:49:2:49:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:50:2:50:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:57:2:57:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:58:2:58:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:59:2:59:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:60:2:60:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:65:2:65:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:66:2:66:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:67:2:67:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:68:2:68:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:75:2:75:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:76:2:76:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:77:2:77:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:78:2:78:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:83:2:83:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:84:2:84:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:85:2:85:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:86:2:86:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:92:2:92:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:93:2:93:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:94:2:94:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:95:2:95:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:99:2:99:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:100:2:100:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:101:2:101:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:102:2:102:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:108:2:108:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:109:2:109:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:110:2:110:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:111:2:111:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:115:2:115:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:116:2:116:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:117:2:117:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:118:2:118:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:124:2:124:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:125:2:125:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:126:2:126:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:127:2:127:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:131:2:131:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:132:2:132:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:133:2:133:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:134:2:134:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:140:2:140:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:141:2:141:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:142:2:142:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:143:2:143:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:147:2:147:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:148:2:148:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:149:2:149:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:150:2:150:5 | sink | | main.go:22:2:22:6 | definition of outer | main.go:25:7:25:11 | outer | | main.go:22:11:24:2 | struct literal | main.go:22:2:22:6 | definition of outer | | main.go:22:11:24:2 | struct literal [postupdate] | main.go:22:2:22:6 | definition of outer | diff --git a/java/kotlin-extractor/deps/kotlin-compiler-2.3.20.jar b/java/kotlin-extractor/deps/kotlin-compiler-2.3.20.jar new file mode 100644 index 000000000000..60eae6cb5ed4 --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-compiler-2.3.20.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4198518f6d840f2f665b2e3c8319a854281f6af43790aca563e3f6b9c46bca68 +size 61256493 diff --git a/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.3.20.jar b/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.3.20.jar new file mode 100644 index 000000000000..a19f1cf34002 --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.3.20.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:976f989d0b5f5d80e8e8a8ad4b73da0bfc27fdd965b9fa38362b2be79ecc1337 +size 59718536 diff --git a/java/kotlin-extractor/deps/kotlin-stdlib-2.3.20.jar b/java/kotlin-extractor/deps/kotlin-stdlib-2.3.20.jar new file mode 100644 index 000000000000..59297c653b7a --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-stdlib-2.3.20.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae12504a5040ebaf37703908483420d1a5624dd1d93f357665f8c77c848a01e +size 1804720 diff --git a/java/kotlin-extractor/dev/wrapper.py b/java/kotlin-extractor/dev/wrapper.py index 8aa5b55ee672..6fc51aded798 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.3.10" +DEFAULT_VERSION = "2.3.20" def options(): diff --git a/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt index 8f85ca7ebd36..14fadbcb6c09 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt @@ -1,3 +1,6 @@ +// referenceClass, referenceFunctions, referenceProperties are deprecated since Kotlin 2.3.20 +@file:Suppress("DEPRECATION") + package com.github.codeql.utils import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext diff --git a/java/kotlin-extractor/versions.bzl b/java/kotlin-extractor/versions.bzl index 33fca7a37f86..cea5d6490255 100644 --- a/java/kotlin-extractor/versions.bzl +++ b/java/kotlin-extractor/versions.bzl @@ -10,6 +10,7 @@ VERSIONS = [ "2.2.0-Beta1", "2.2.20-Beta2", "2.3.0", + "2.3.20", ] def _version_to_tuple(v): diff --git a/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.expected b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.expected index 07722d53b1e8..bbf6b186e1f3 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/annotation-id-consistency/PrintAst.expected @@ -281,7 +281,12 @@ test.kt: # 40| 11: [Class] HasKotlinDeprecatedAnnotationUsedByJava #-----| -3: (Annotations) # 40| 1: [Annotation] Deprecated -# 40| 1: [StringLiteral] "Kotlin deprecation message 1" +# 0| 1: [Annotation] ReplaceWith +# 0| 1: [StringLiteral] "" +# 0| 2: [ArrayInit] {...} +# 0| 2: [VarAccess] DeprecationLevel.WARNING +# 0| -1: [TypeAccess] DeprecationLevel +# 40| 3: [StringLiteral] "Kotlin deprecation message 1" # 40| 1: [Constructor] HasKotlinDeprecatedAnnotationUsedByJava # 40| 5: [BlockStmt] { ... } # 40| 0: [SuperConstructorInvocationStmt] super(...) @@ -298,7 +303,12 @@ test.kt: # 46| 13: [Class] HasKotlinDeprecatedAnnotationUsedByKotlin #-----| -3: (Annotations) # 46| 1: [Annotation] Deprecated -# 46| 1: [StringLiteral] "Kotlin deprecation message 2" +# 0| 1: [Annotation] ReplaceWith +# 0| 1: [StringLiteral] "" +# 0| 2: [ArrayInit] {...} +# 0| 2: [VarAccess] DeprecationLevel.WARNING +# 0| -1: [TypeAccess] DeprecationLevel +# 46| 3: [StringLiteral] "Kotlin deprecation message 2" # 46| 1: [Constructor] HasKotlinDeprecatedAnnotationUsedByKotlin # 46| 5: [BlockStmt] { ... } # 46| 0: [SuperConstructorInvocationStmt] super(...) 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 bbc580f1e48b..2720daff0b22 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.3.20.", + "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 2.3.30.", "severity": "error", "source": { "extractorName": "java", diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 247571129230..caa1eaecb948 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,20 @@ +## 9.0.3 + +### Minor Analysis Improvements + +* The `java/tainted-arithmetic` query no longer flags arithmetic expressions that are used directly as an operand of a comparison in `if`-condition bounds-checking patterns. For example, `if (off + len > array.length)` is now recognized as a bounds check rather than a potentially vulnerable computation, reducing false positives. +* The `java/potentially-weak-cryptographic-algorithm` query no longer flags Elliptic Curve algorithms (`EC`, `ECDSA`, `ECDH`, `EdDSA`, `Ed25519`, `Ed448`, `XDH`, `X25519`, `X448`), HMAC-based algorithms (`HMACSHA1`, `HMACSHA256`, `HMACSHA384`, `HMACSHA512`), or PBKDF2 key derivation as potentially insecure. These are modern, secure algorithms recommended by NIST and other standards bodies. This will reduce the number of false positives for this query. +* The first argument of the method `getInstance` of `java.security.Signature` is now modeled as a sink for `java/potentially-weak-cryptographic-algorithm`, `java/weak-cryptographic-algorithm` and `java/rsa-without-oaep`. This will increase the number of alerts for these queries. +* Kotlin versions up to 2.3.20 are now supported. + +## 9.0.2 + +No user-facing changes. + +## 9.0.1 + +No user-facing changes. + ## 9.0.0 ### Breaking Changes diff --git a/java/ql/lib/change-notes/2026-04-16-woodstox-xxe.md b/java/ql/lib/change-notes/2026-04-16-woodstox-xxe.md new file mode 100644 index 000000000000..891fc489e464 --- /dev/null +++ b/java/ql/lib/change-notes/2026-04-16-woodstox-xxe.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The queries "Resolving XML external entity in user-controlled data" (`java/xxe`) and "Resolving XML external entity in user-controlled data from local source" (`java/xxe-local`) now recognize sinks in the Woodstox StAX library when `com.ctc.wstx.stax.WstxInputFactory` or `org.codehaus.stax2.XMLInputFactory2` are used directly. diff --git a/java/ql/lib/change-notes/2026-04-18-partial-path-traversal-fix.md b/java/ql/lib/change-notes/2026-04-18-partial-path-traversal-fix.md new file mode 100644 index 000000000000..8c15a346552e --- /dev/null +++ b/java/ql/lib/change-notes/2026-04-18-partial-path-traversal-fix.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `java/partial-path-traversal` and `java/partial-path-traversal-from-remote` queries now correctly recognize file separator appends using `+=`. diff --git a/java/ql/lib/change-notes/released/9.0.1.md b/java/ql/lib/change-notes/released/9.0.1.md new file mode 100644 index 000000000000..149eafcb81a8 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.0.1.md @@ -0,0 +1,3 @@ +## 9.0.1 + +No user-facing changes. diff --git a/java/ql/lib/change-notes/released/9.0.2.md b/java/ql/lib/change-notes/released/9.0.2.md new file mode 100644 index 000000000000..e6435a5a604b --- /dev/null +++ b/java/ql/lib/change-notes/released/9.0.2.md @@ -0,0 +1,3 @@ +## 9.0.2 + +No user-facing changes. diff --git a/java/ql/lib/change-notes/released/9.0.3.md b/java/ql/lib/change-notes/released/9.0.3.md new file mode 100644 index 000000000000..828b5867f8b2 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.0.3.md @@ -0,0 +1,8 @@ +## 9.0.3 + +### Minor Analysis Improvements + +* The `java/tainted-arithmetic` query no longer flags arithmetic expressions that are used directly as an operand of a comparison in `if`-condition bounds-checking patterns. For example, `if (off + len > array.length)` is now recognized as a bounds check rather than a potentially vulnerable computation, reducing false positives. +* The `java/potentially-weak-cryptographic-algorithm` query no longer flags Elliptic Curve algorithms (`EC`, `ECDSA`, `ECDH`, `EdDSA`, `Ed25519`, `Ed448`, `XDH`, `X25519`, `X448`), HMAC-based algorithms (`HMACSHA1`, `HMACSHA256`, `HMACSHA384`, `HMACSHA512`), or PBKDF2 key derivation as potentially insecure. These are modern, secure algorithms recommended by NIST and other standards bodies. This will reduce the number of false positives for this query. +* The first argument of the method `getInstance` of `java.security.Signature` is now modeled as a sink for `java/potentially-weak-cryptographic-algorithm`, `java/weak-cryptographic-algorithm` and `java/rsa-without-oaep`. This will increase the number of alerts for these queries. +* Kotlin versions up to 2.3.20 are now supported. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index fd5f4a48b3c1..175658aaf53d 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 9.0.0 +lastReleaseVersion: 9.0.3 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index e45e13037e7e..7f058cfb8d60 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 9.0.0 +version: 9.0.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll index 1536c81aa083..a6a9347ca03a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll @@ -4,13 +4,17 @@ * Provides classes and predicates for dealing with flow models specified * in data extensions and CSV format. * - * The CSV specification has the following columns: + * The extensible relations have the following columns: * - Sources: * `package; type; subtypes; name; signature; ext; output; kind; provenance` * - Sinks: * `package; type; subtypes; name; signature; ext; input; kind; provenance` * - Summaries: * `package; type; subtypes; name; signature; ext; input; output; kind; provenance` + * - Barriers: + * `package; type; subtypes; name; signature; ext; output; kind; provenance` + * - BarrierGuards: + * `package; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` * - Neutrals: * `package; type; name; signature; kind; provenance` * A neutral is used to indicate that a callable is neutral with respect to flow (no summary), source (is not a source) or sink (is not a sink). @@ -69,14 +73,17 @@ * in the given range. The range is inclusive at both ends. * - "ReturnValue": Selects the return value of a call to the selected element. * - "Element": Selects the collection elements of the selected element. - * 8. The `kind` column is a tag that can be referenced from QL to determine to + * 8. The `acceptingValue` column of barrier guard models specifies the condition + * under which the guard blocks flow. It can be one of "true" or "false". In + * the future "no-exception", "not-zero", "null", "not-null" may be supported. + * 9. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. For neutrals the kind can be `summary`, * `source` or `sink` to indicate that the neutral is neutral with respect to * flow (no summary), source (is not a source) or sink (is not a sink). - * 9. The `provenance` column is a tag to indicate the origin and verification of a model. + * 10. The `provenance` column is a tag to indicate the origin and verification of a model. * The format is {origin}-{verification} or just "manual" where the origin describes * the origin of the model and verification describes how the model has been verified. * Some examples are: @@ -358,11 +365,11 @@ module ModelValidation { result = "Unrecognized provenance description \"" + provenance + "\" in " + pred + " model." ) or - exists(string acceptingvalue | - barrierGuardModel(_, _, _, _, _, _, _, acceptingvalue, _, _, _) and - invalidAcceptingValue(acceptingvalue) and + exists(string acceptingValue | + barrierGuardModel(_, _, _, _, _, _, _, acceptingValue, _, _, _) and + invalidAcceptingValue(acceptingValue) and result = - "Unrecognized accepting value description \"" + acceptingvalue + + "Unrecognized accepting value description \"" + acceptingValue + "\" in barrier guard model." ) } @@ -583,13 +590,13 @@ private module Cached { private predicate barrierGuardChecks(Guard g, Expr e, GuardValue gv, TKindModelPair kmp) { exists( - SourceSinkInterpretationInput::InterpretNode n, AcceptingValue acceptingvalue, string kind, + SourceSinkInterpretationInput::InterpretNode n, AcceptingValue acceptingValue, string kind, string model | - isBarrierGuardNode(n, acceptingvalue, kind, model) and + isBarrierGuardNode(n, acceptingValue, kind, model) and n.asNode().asExpr() = e and kmp = TMkPair(kind, model) and - gv = convertAcceptingValue(acceptingvalue) + gv = convertAcceptingValue(acceptingValue) | g.(Call).getAnArgument() = e or g.(MethodCall).getQualifier() = e ) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll index be474ad45352..3c6b003876de 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ExternalFlowExtensions.qll @@ -35,7 +35,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string package, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index 64fa30c7d914..453b7ccae11c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -282,7 +282,7 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( @@ -290,7 +290,7 @@ module SourceSinkInterpretationInput implements SourceOrSinkElement baseBarrier, string originalInput | barrierGuardModel(namespace, type, subtypes, name, signature, ext, originalInput, - acceptingvalue, kind, provenance, model) and + acceptingValue, kind, provenance, model) and baseBarrier = interpretElement(namespace, type, subtypes, name, signature, ext, _) and ( e = baseBarrier and input = originalInput diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll b/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll index 9282e7666273..42b7ec7b02d8 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticCommon.qll @@ -132,7 +132,21 @@ private predicate inBitwiseAnd(Expr exp) { /** Holds if overflow/underflow is irrelevant for this expression. */ predicate overflowIrrelevant(Expr exp) { inBitwiseAnd(exp) or - exp.getEnclosingCallable() instanceof HashCodeMethod + exp.getEnclosingCallable() instanceof HashCodeMethod or + arithmeticUsedInBoundsCheck(exp) +} + +/** + * Holds if `exp` is an arithmetic expression used directly as an operand of a + * comparison in an `if`-condition, indicating it is part of a bounds check + * rather than a vulnerable computation. For example, in + * `if (off + len > array.length)`, the addition is the bounds check itself. + */ +private predicate arithmeticUsedInBoundsCheck(ArithExpr exp) { + exists(ComparisonExpr comp | + comp.getAnOperand() = exp and + comp.getEnclosingStmt() instanceof IfStmt + ) } /** diff --git a/java/ql/lib/semmle/code/java/security/Encryption.qll b/java/ql/lib/semmle/code/java/security/Encryption.qll index b0a0fc72df77..6af8d29cc4a1 100644 --- a/java/ql/lib/semmle/code/java/security/Encryption.qll +++ b/java/ql/lib/semmle/code/java/security/Encryption.qll @@ -259,7 +259,13 @@ string getASecureAlgorithmName() { result = [ "RSA", "SHA-?(256|384|512)", "CCM", "GCM", "AES(?![^a-zA-Z](ECB|CBC/PKCS[57]Padding))", - "Blowfish", "ECIES", "SHA3-(256|384|512)" + "Blowfish", "ECIES", "SHA3-(256|384|512)", + // Elliptic Curve algorithms: EC (key generation), ECDSA (signatures), ECDH (key agreement), + // EdDSA/Ed25519/Ed448 (Edwards-curve signatures), XDH/X25519/X448 (key agreement). + // These are modern, secure algorithms recommended by NIST and other standards bodies. + "EC", "ECDSA", "ECDH", "EdDSA", "Ed25519", "Ed448", "XDH", "X25519", "X448", + // HMAC-based algorithms and key derivation functions. + "HMACSHA(1|256|384|512)", "HmacSHA(1|256|384|512)", "PBKDF2" ] } @@ -366,9 +372,13 @@ class JavaSecuritySignature extends JavaSecurityAlgoSpec { exists(Constructor c | c.getAReference() = this | c.getDeclaringType().hasQualifiedName("java.security", "Signature") ) + or + exists(Method m | m.getAReference() = this | + m.hasQualifiedName("java.security", "Signature", "getInstance") + ) } - override Expr getAlgoSpec() { result = this.(ConstructorCall).getArgument(0) } + override Expr getAlgoSpec() { result = this.(Call).getArgument(0) } } /** A call to the `getInstance` method declared in `java.security.KeyPairGenerator`. */ diff --git a/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll b/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll index 63ffb62ef63b..a7b0c50b0827 100644 --- a/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll +++ b/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll @@ -40,8 +40,11 @@ private class CharacterLiteralFileSeparatorExpr extends FileSeparatorExpr, Chara CharacterLiteralFileSeparatorExpr() { this.getValue() = "/" or this.getValue() = "\\" } } -private class FileSeparatorAppend extends AddExpr { - FileSeparatorAppend() { this.getRightOperand() instanceof FileSeparatorExpr } +private class FileSeparatorAppend extends BinaryExpr { + FileSeparatorAppend() { + this.(AddExpr).getRightOperand() instanceof FileSeparatorExpr or + this.(AssignAddExpr).getRightOperand() instanceof FileSeparatorExpr + } } private predicate isSafe(Expr expr) { diff --git a/java/ql/lib/semmle/code/java/security/XmlParsers.qll b/java/ql/lib/semmle/code/java/security/XmlParsers.qll index bd1520034eb9..602076996a77 100644 --- a/java/ql/lib/semmle/code/java/security/XmlParsers.qll +++ b/java/ql/lib/semmle/code/java/security/XmlParsers.qll @@ -179,12 +179,29 @@ class XmlInputFactory extends RefType { XmlInputFactory() { this.hasQualifiedName(javaxOrJakarta() + ".xml.stream", "XMLInputFactory") } } -/** A call to `XMLInputFactory.createXMLStreamReader`. */ +/** + * The class `com.ctc.wstx.stax.WstxInputFactory` or its abstract supertype + * `org.codehaus.stax2.XMLInputFactory2` from the Woodstox StAX library. + */ +class WstxInputFactory extends RefType { + WstxInputFactory() { + this.hasQualifiedName("com.ctc.wstx.stax", "WstxInputFactory") or + this.hasQualifiedName("org.codehaus.stax2", "XMLInputFactory2") + } +} + +/** + * A call to `XMLInputFactory.createXMLStreamReader` or the equivalent method on the + * Woodstox `WstxInputFactory`. + */ class XmlInputFactoryStreamReader extends XmlParserCall { XmlInputFactoryStreamReader() { exists(Method m | this.getMethod() = m and - m.getDeclaringType() instanceof XmlInputFactory and + ( + m.getDeclaringType() instanceof XmlInputFactory or + m.getDeclaringType() instanceof WstxInputFactory + ) and m.hasName("createXMLStreamReader") ) } @@ -212,7 +229,10 @@ class XmlInputFactoryEventReader extends XmlParserCall { XmlInputFactoryEventReader() { exists(Method m | this.getMethod() = m and - m.getDeclaringType() instanceof XmlInputFactory and + ( + m.getDeclaringType() instanceof XmlInputFactory or + m.getDeclaringType() instanceof WstxInputFactory + ) and m.hasName("createXMLEventReader") ) } @@ -235,7 +255,10 @@ class XmlInputFactoryConfig extends ParserConfig { XmlInputFactoryConfig() { exists(Method m | m = this.getMethod() and - m.getDeclaringType() instanceof XmlInputFactory and + ( + m.getDeclaringType() instanceof XmlInputFactory or + m.getDeclaringType() instanceof WstxInputFactory + ) and m.hasName("setProperty") ) } diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index ae0e77925bd5..2a2f8052092f 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 1.11.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `java/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `java/android/webview-addjavascriptinterface`, `java/android/websettings-javascript-enabled` and `java/xss` has been increased from 6.1 (medium) to 7.8 (high). + +## 1.10.11 + +No user-facing changes. + +## 1.10.10 + +No user-facing changes. + ## 1.10.9 No user-facing changes. diff --git a/java/ql/src/Security/CWE/CWE-079/AndroidWebViewAddJavascriptInterface.ql b/java/ql/src/Security/CWE/CWE-079/AndroidWebViewAddJavascriptInterface.ql index 4368b537ab7c..3b4abcaa7f68 100644 --- a/java/ql/src/Security/CWE/CWE-079/AndroidWebViewAddJavascriptInterface.ql +++ b/java/ql/src/Security/CWE/CWE-079/AndroidWebViewAddJavascriptInterface.ql @@ -4,7 +4,7 @@ * @description Exposing a Java object in a WebView with a JavaScript interface can lead to malicious JavaScript controlling the application. * @kind problem * @problem.severity warning - * @security-severity 6.1 + * @security-severity 7.8 * @precision medium * @tags security * external/cwe/cwe-079 diff --git a/java/ql/src/Security/CWE/CWE-079/AndroidWebViewSettingsEnabledJavaScript.ql b/java/ql/src/Security/CWE/CWE-079/AndroidWebViewSettingsEnabledJavaScript.ql index 561b2af8de02..3ea2b207c04b 100644 --- a/java/ql/src/Security/CWE/CWE-079/AndroidWebViewSettingsEnabledJavaScript.ql +++ b/java/ql/src/Security/CWE/CWE-079/AndroidWebViewSettingsEnabledJavaScript.ql @@ -4,7 +4,7 @@ * @kind problem * @id java/android/websettings-javascript-enabled * @problem.severity warning - * @security-severity 6.1 + * @security-severity 7.8 * @precision medium * @tags security * external/cwe/cwe-079 diff --git a/java/ql/src/Security/CWE/CWE-079/XSS.ql b/java/ql/src/Security/CWE/CWE-079/XSS.ql index 9ae92a7e362e..f1261ebff744 100644 --- a/java/ql/src/Security/CWE/CWE-079/XSS.ql +++ b/java/ql/src/Security/CWE/CWE-079/XSS.ql @@ -4,7 +4,7 @@ * allows for a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id java/xss * @tags security diff --git a/java/ql/src/Security/CWE/CWE-117/LogInjection.ql b/java/ql/src/Security/CWE/CWE-117/LogInjection.ql index dd4ffb6a10a1..f3efb578f76a 100644 --- a/java/ql/src/Security/CWE/CWE-117/LogInjection.ql +++ b/java/ql/src/Security/CWE/CWE-117/LogInjection.ql @@ -4,7 +4,7 @@ * insertion of forged log entries by malicious users. * @kind path-problem * @problem.severity error - * @security-severity 7.8 + * @security-severity 6.1 * @precision medium * @id java/log-injection * @tags security diff --git a/java/ql/src/change-notes/released/1.10.10.md b/java/ql/src/change-notes/released/1.10.10.md new file mode 100644 index 000000000000..89d508301650 --- /dev/null +++ b/java/ql/src/change-notes/released/1.10.10.md @@ -0,0 +1,3 @@ +## 1.10.10 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.10.11.md b/java/ql/src/change-notes/released/1.10.11.md new file mode 100644 index 000000000000..24364c1fec51 --- /dev/null +++ b/java/ql/src/change-notes/released/1.10.11.md @@ -0,0 +1,3 @@ +## 1.10.11 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.11.0.md b/java/ql/src/change-notes/released/1.11.0.md new file mode 100644 index 000000000000..0be4b0481d60 --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.0.md @@ -0,0 +1,6 @@ +## 1.11.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `java/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `java/android/webview-addjavascriptinterface`, `java/android/websettings-javascript-enabled` and `java/xss` has been increased from 6.1 (medium) to 7.8 (high). diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 947b9a72073b..276088d81dc8 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.10.9 +lastReleaseVersion: 1.11.0 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 6d1aa235ed65..72b4a5f94e6c 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.10.9 +version: 1.11.1-dev groups: - java - queries diff --git a/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected b/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected index a56980d10ac4..a55e73e283fa 100644 --- a/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected +++ b/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected @@ -196,6 +196,8 @@ methodWithDuplicate | List | listIterator | int | | List | of | E | | List | of | E[] | +| List | ofLazy | IntFunction | +| List | ofLazy | int | | List | remove | Object | | List | remove | int | | List | removeAll | Collection | @@ -222,6 +224,8 @@ methodWithDuplicate | List | listIterator | int | | List | of | E | | List | of | E[] | +| List | ofLazy | IntFunction | +| List | ofLazy | int | | List | remove | Object | | List | remove | int | | List | removeAll | Collection | @@ -248,6 +252,8 @@ methodWithDuplicate | List | listIterator | int | | List | of | E | | List | of | E[] | +| List | ofLazy | IntFunction | +| List | ofLazy | int | | List | remove | Object | | List | remove | int | | List | removeAll | Collection | @@ -280,6 +286,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | K | | Map | put | V | | Map | putAll | Map | @@ -310,6 +318,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | Identity | | Map | put | Object | | Map | putAll | Map | @@ -341,6 +351,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | K | | Map | put | V | | Map | putAll | Map | @@ -370,6 +382,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | Object | | Map | putAll | Map | | Map | putIfAbsent | Object | @@ -397,6 +411,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | String | | Map | putAll | Map | | Map | putIfAbsent | String | diff --git a/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected b/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected index 2495c1fc1572..3237c89c8c72 100644 --- a/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected +++ b/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected @@ -191,6 +191,8 @@ methodWithDuplicate | List | listIterator | int | | List | of | E | | List | of | E[] | +| List | ofLazy | IntFunction | +| List | ofLazy | int | | List | remove | Object | | List | remove | int | | List | removeAll | Collection | @@ -216,6 +218,8 @@ methodWithDuplicate | List | listIterator | int | | List | of | E | | List | of | E[] | +| List | ofLazy | IntFunction | +| List | ofLazy | int | | List | remove | Object | | List | remove | int | | List | removeAll | Collection | @@ -242,6 +246,8 @@ methodWithDuplicate | List | listIterator | int | | List | of | E | | List | of | E[] | +| List | ofLazy | IntFunction | +| List | ofLazy | int | | List | remove | Object | | List | remove | int | | List | removeAll | Collection | @@ -274,6 +280,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | K | | Map | put | V | | Map | putAll | Map | @@ -303,6 +311,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | Identity | | Map | put | Object | | Map | putAll | Map | @@ -333,6 +343,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | K | | Map | put | V | | Map | putAll | Map | @@ -361,6 +373,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | Object | | Map | putAll | Map | | Map | putIfAbsent | Object | @@ -388,6 +402,8 @@ methodWithDuplicate | Map | of | K | | Map | of | V | | Map | ofEntries | Entry[] | +| Map | ofLazy | Function | +| Map | ofLazy | Set | | Map | put | String | | Map | putAll | Map | | Map | putIfAbsent | String | diff --git a/java/ql/test-kotlin2/library-tests/reflection/reflection.expected b/java/ql/test-kotlin2/library-tests/reflection/reflection.expected index b5de2b1adea3..2c0bee11a9e2 100644 --- a/java/ql/test-kotlin2/library-tests/reflection/reflection.expected +++ b/java/ql/test-kotlin2/library-tests/reflection/reflection.expected @@ -266,6 +266,7 @@ compGenerated | file:///AccessFlag$Location.class:0:0:0:0 | getEntries | Default property accessor | | file:///AccessFlag.class:0:0:0:0 | getEntries | Default property accessor | | file:///AccessMode.class:0:0:0:0 | getEntries | Default property accessor | +| file:///ByteOrder.class:0:0:0:0 | getEntries | Default property accessor | | file:///CharProgression.class:0:0:0:0 | forEach | Forwarder for a Kotlin class inheriting an interface default method | | file:///CharProgression.class:0:0:0:0 | spliterator | Forwarder for a Kotlin class inheriting an interface default method | | file:///CharRange.class:0:0:0:0 | forEach | Forwarder for a Kotlin class inheriting an interface default method | diff --git a/java/ql/test/library-tests/compact-source-files/CompactSourceAnalysis.expected b/java/ql/test/library-tests/compact-source-files/CompactSourceAnalysis.expected index 05db00aa26de..0e1dd647e411 100644 --- a/java/ql/test/library-tests/compact-source-files/CompactSourceAnalysis.expected +++ b/java/ql/test/library-tests/compact-source-files/CompactSourceAnalysis.expected @@ -1 +1 @@ -| Test.java:0:0:0:0 | Test | Test.java:1:1:1:1 | Test | Compact source file 'Test' contains implicit class 'Test' | +| Test.java:0:0:0:0 | Test | Test.java:1:1:29:1 | Test | Compact source file 'Test' contains implicit class 'Test' | diff --git a/java/ql/test/library-tests/compact-source-files/ImplicitClassDetection.expected b/java/ql/test/library-tests/compact-source-files/ImplicitClassDetection.expected index 61dcdd8a17ff..9bfaaecbbcb1 100644 --- a/java/ql/test/library-tests/compact-source-files/ImplicitClassDetection.expected +++ b/java/ql/test/library-tests/compact-source-files/ImplicitClassDetection.expected @@ -1,2 +1,2 @@ -| Test.java:1:1:1:1 | Test | implicit | +| Test.java:1:1:29:1 | Test | implicit | | Test.java:25:7:25:16 | NotCompact | not implicit | diff --git a/java/ql/test/library-tests/compact-source-files/MethodInCompactSource.expected b/java/ql/test/library-tests/compact-source-files/MethodInCompactSource.expected index 3c7b45f500ee..d4b41c614413 100644 --- a/java/ql/test/library-tests/compact-source-files/MethodInCompactSource.expected +++ b/java/ql/test/library-tests/compact-source-files/MethodInCompactSource.expected @@ -1,5 +1,5 @@ -| Test.java:1:1:1:1 | | in compact source | -| Test.java:1:1:1:1 | | in compact source | +| Test.java:1:1:29:1 | | in compact source | +| Test.java:1:1:29:1 | | in compact source | | Test.java:5:6:5:9 | main | in compact source | | Test.java:11:6:11:16 | processData | in compact source | | Test.java:16:14:16:31 | updatePrivateField | in compact source | diff --git a/java/ql/test/library-tests/compact-source-files/options b/java/ql/test/library-tests/compact-source-files/options index db1dc01e53b7..3d6e630aa73e 100644 --- a/java/ql/test/library-tests/compact-source-files/options +++ b/java/ql/test/library-tests/compact-source-files/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 25 --enable-preview +//semmle-extractor-options: --javac-args --release 25 diff --git a/java/ql/test/library-tests/dataflow/kdf/options b/java/ql/test/library-tests/dataflow/kdf/options index f4edc64c0178..801b81e07526 100644 --- a/java/ql/test/library-tests/dataflow/kdf/options +++ b/java/ql/test/library-tests/dataflow/kdf/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --enable-preview --release 25 \ No newline at end of file +//semmle-extractor-options: --javac-args --release 25 \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/scoped-values/options b/java/ql/test/library-tests/dataflow/scoped-values/options index c793109355a5..2d42b8d2cd8d 100644 --- a/java/ql/test/library-tests/dataflow/scoped-values/options +++ b/java/ql/test/library-tests/dataflow/scoped-values/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -source 25 -target 25 --enable-preview \ No newline at end of file +//semmle-extractor-options: --javac-args -source 25 -target 25 \ No newline at end of file diff --git a/java/ql/test/library-tests/errorexpr/Test.java b/java/ql/test/library-tests/errorexpr/Test.java index af314e5ced67..068690e7bb20 100644 --- a/java/ql/test/library-tests/errorexpr/Test.java +++ b/java/ql/test/library-tests/errorexpr/Test.java @@ -13,6 +13,5 @@ public int yieldWrapper(int x) { } // Diagnostic Matches: Erroneous node in tree: (ERROR) -// Diagnostic Matches: In file Test.java:8:15 no end location for JCMethodInvocation : yield(x) // Diagnostic Matches: 1 errors during annotation processing // Diagnostic Matches: Unknown or erroneous type for expression of kind ErrorExpr diff --git a/java/ql/test/library-tests/flexible-constructors/options b/java/ql/test/library-tests/flexible-constructors/options index db1dc01e53b7..3d6e630aa73e 100644 --- a/java/ql/test/library-tests/flexible-constructors/options +++ b/java/ql/test/library-tests/flexible-constructors/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 25 --enable-preview +//semmle-extractor-options: --javac-args --release 25 diff --git a/java/ql/test/library-tests/module-import-declarations/options b/java/ql/test/library-tests/module-import-declarations/options index b510fdce0df9..801b81e07526 100644 --- a/java/ql/test/library-tests/module-import-declarations/options +++ b/java/ql/test/library-tests/module-import-declarations/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 25 --enable-preview \ No newline at end of file +//semmle-extractor-options: --javac-args --release 25 \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.qlref b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.qlref index 431556c90afa..9d7e47fca707 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.qlref +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.qlref @@ -1 +1,4 @@ -Security/CWE/CWE-023/PartialPathTraversal.ql \ No newline at end of file +query: Security/CWE/CWE-023/PartialPathTraversal.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected index f2af01542ee9..156adced6b08 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected @@ -1,19 +1,19 @@ #select -| PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | -| PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:32:14:32:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:38:14:38:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:45:14:45:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:52:14:52:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:56:14:56:27 | canonicalPath2 | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:64:14:64:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:67:14:67:27 | canonicalPath2 | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:97:14:97:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:105:14:105:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:108:14:108:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:176:14:176:37 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | +| PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | Partial Path Traversal Vulnerability due to insufficient guard against path traversal from $@. | PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | user-supplied data | edges | PartialPathTraversalTest.java:13:14:13:18 | dir(...) : File | PartialPathTraversalTest.java:13:14:13:37 | getCanonicalPath(...) | provenance | MaD:6 | | PartialPathTraversalTest.java:20:10:20:14 | dir(...) : File | PartialPathTraversalTest.java:20:10:20:33 | getCanonicalPath(...) | provenance | MaD:6 | @@ -43,30 +43,30 @@ edges | PartialPathTraversalTest.java:194:18:194:28 | encodedFile : File | PartialPathTraversalTest.java:194:18:194:47 | getCanonicalPath(...) | provenance | MaD:6 | | PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | PartialPathTraversalTest.java:211:46:211:69 | getCanonicalPath(...) : String | provenance | MaD:6 | | PartialPathTraversalTest.java:211:46:211:69 | getCanonicalPath(...) : String | PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | provenance | | -| PartialPathTraversalTest.java:252:45:252:117 | new BufferedReader(...) : BufferedReader | PartialPathTraversalTest.java:253:31:253:44 | filenameReader : BufferedReader | provenance | | -| PartialPathTraversalTest.java:252:64:252:116 | new InputStreamReader(...) : InputStreamReader | PartialPathTraversalTest.java:252:45:252:117 | new BufferedReader(...) : BufferedReader | provenance | MaD:2 | -| PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:252:64:252:116 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:1 MaD:7 | -| PartialPathTraversalTest.java:253:31:253:44 | filenameReader : BufferedReader | PartialPathTraversalTest.java:253:31:253:55 | readLine(...) : String | provenance | MaD:3 | -| PartialPathTraversalTest.java:253:31:253:55 | readLine(...) : String | PartialPathTraversalTest.java:254:29:254:36 | filename : String | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:13:14:13:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:20:10:20:14 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:32:14:32:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:38:14:38:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:44:32:44:36 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:51:32:51:36 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:55:33:55:37 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:62:32:62:36 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:63:33:63:37 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:97:14:97:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:105:14:105:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:108:14:108:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:176:14:176:18 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | PartialPathTraversalTest.java:261:16:261:20 | dir(...) : File | provenance | | -| PartialPathTraversalTest.java:254:29:254:36 | filename : String | PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | provenance | MaD:4 | -| PartialPathTraversalTest.java:261:16:261:20 | dir(...) : File | PartialPathTraversalTest.java:261:16:261:38 | getAbsolutePath(...) : String | provenance | MaD:5 | -| PartialPathTraversalTest.java:261:16:261:38 | getAbsolutePath(...) : String | PartialPathTraversalTest.java:261:16:261:60 | split(...) : String[] | provenance | MaD:10 | -| PartialPathTraversalTest.java:261:16:261:60 | split(...) : String[] | PartialPathTraversalTest.java:186:25:186:30 | path(...) : String[] | provenance | | +| PartialPathTraversalTest.java:260:45:260:117 | new BufferedReader(...) : BufferedReader | PartialPathTraversalTest.java:261:31:261:44 | filenameReader : BufferedReader | provenance | | +| PartialPathTraversalTest.java:260:64:260:116 | new InputStreamReader(...) : InputStreamReader | PartialPathTraversalTest.java:260:45:260:117 | new BufferedReader(...) : BufferedReader | provenance | MaD:2 | +| PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | PartialPathTraversalTest.java:260:64:260:116 | new InputStreamReader(...) : InputStreamReader | provenance | Src:MaD:1 MaD:7 | +| PartialPathTraversalTest.java:261:31:261:44 | filenameReader : BufferedReader | PartialPathTraversalTest.java:261:31:261:55 | readLine(...) : String | provenance | MaD:3 | +| PartialPathTraversalTest.java:261:31:261:55 | readLine(...) : String | PartialPathTraversalTest.java:262:29:262:36 | filename : String | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:13:14:13:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:20:10:20:14 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:32:14:32:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:38:14:38:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:44:32:44:36 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:51:32:51:36 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:55:33:55:37 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:62:32:62:36 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:63:33:63:37 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:97:14:97:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:105:14:105:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:108:14:108:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:176:14:176:18 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | PartialPathTraversalTest.java:269:16:269:20 | dir(...) : File | provenance | | +| PartialPathTraversalTest.java:262:29:262:36 | filename : String | PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | provenance | MaD:4 | +| PartialPathTraversalTest.java:269:16:269:20 | dir(...) : File | PartialPathTraversalTest.java:269:16:269:38 | getAbsolutePath(...) : String | provenance | MaD:5 | +| PartialPathTraversalTest.java:269:16:269:38 | getAbsolutePath(...) : String | PartialPathTraversalTest.java:269:16:269:60 | split(...) : String[] | provenance | MaD:10 | +| PartialPathTraversalTest.java:269:16:269:60 | split(...) : String[] | PartialPathTraversalTest.java:186:25:186:30 | path(...) : String[] | provenance | | models | 1 | Source: java.net; Socket; false; getInputStream; (); ; ReturnValue; remote; manual | | 2 | Summary: java.io; BufferedReader; false; BufferedReader; ; ; Argument[0]; Argument[this]; taint; manual | @@ -122,14 +122,14 @@ nodes | PartialPathTraversalTest.java:211:46:211:50 | dir(...) : File | semmle.label | dir(...) : File | | PartialPathTraversalTest.java:211:46:211:69 | getCanonicalPath(...) : String | semmle.label | getCanonicalPath(...) : String | | PartialPathTraversalTest.java:212:14:212:26 | canonicalPath | semmle.label | canonicalPath | -| PartialPathTraversalTest.java:252:45:252:117 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | -| PartialPathTraversalTest.java:252:64:252:116 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | -| PartialPathTraversalTest.java:252:86:252:106 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | -| PartialPathTraversalTest.java:253:31:253:44 | filenameReader : BufferedReader | semmle.label | filenameReader : BufferedReader | -| PartialPathTraversalTest.java:253:31:253:55 | readLine(...) : String | semmle.label | readLine(...) : String | -| PartialPathTraversalTest.java:254:20:254:37 | new File(...) : File | semmle.label | new File(...) : File | -| PartialPathTraversalTest.java:254:29:254:36 | filename : String | semmle.label | filename : String | -| PartialPathTraversalTest.java:261:16:261:20 | dir(...) : File | semmle.label | dir(...) : File | -| PartialPathTraversalTest.java:261:16:261:38 | getAbsolutePath(...) : String | semmle.label | getAbsolutePath(...) : String | -| PartialPathTraversalTest.java:261:16:261:60 | split(...) : String[] | semmle.label | split(...) : String[] | +| PartialPathTraversalTest.java:260:45:260:117 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | +| PartialPathTraversalTest.java:260:64:260:116 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | +| PartialPathTraversalTest.java:260:86:260:106 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | +| PartialPathTraversalTest.java:261:31:261:44 | filenameReader : BufferedReader | semmle.label | filenameReader : BufferedReader | +| PartialPathTraversalTest.java:261:31:261:55 | readLine(...) : String | semmle.label | readLine(...) : String | +| PartialPathTraversalTest.java:262:20:262:37 | new File(...) : File | semmle.label | new File(...) : File | +| PartialPathTraversalTest.java:262:29:262:36 | filename : String | semmle.label | filename : String | +| PartialPathTraversalTest.java:269:16:269:20 | dir(...) : File | semmle.label | dir(...) : File | +| PartialPathTraversalTest.java:269:16:269:38 | getAbsolutePath(...) : String | semmle.label | getAbsolutePath(...) : String | +| PartialPathTraversalTest.java:269:16:269:60 | split(...) : String[] | semmle.label | split(...) : String[] | subpaths diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java index b1986c1b6694..42e70b2c53d3 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java @@ -10,14 +10,14 @@ public class PartialPathTraversalTest { public void esapiExample(File parent) throws IOException { - if (!dir().getCanonicalPath().startsWith(parent.getCanonicalPath())) { // $ Alert + if (!dir().getCanonicalPath().startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @SuppressWarnings("ResultOfMethodCallIgnored") void foo1(File parent) throws IOException { - (dir().getCanonicalPath()).startsWith((parent.getCanonicalPath())); // $ Alert + (dir().getCanonicalPath()).startsWith((parent.getCanonicalPath())); // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] } void foo2(File parent) throws IOException { @@ -29,31 +29,31 @@ void foo2(File parent) throws IOException { void foo3(File parent) throws IOException { String parentPath = parent.getCanonicalPath(); - if (!dir().getCanonicalPath().startsWith(parentPath)) { // $ Alert + if (!dir().getCanonicalPath().startsWith(parentPath)) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } void foo4() throws IOException { - if (!dir().getCanonicalPath().startsWith("/usr" + "/dir")) { // $ Alert + if (!dir().getCanonicalPath().startsWith("/usr" + "/dir")) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } void foo5(File parent) throws IOException { String canonicalPath = dir().getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } void foo6(File parent) throws IOException { String canonicalPath = dir().getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } String canonicalPath2 = dir().getCanonicalPath(); - if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $ Alert + if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -61,10 +61,10 @@ void foo6(File parent) throws IOException { void foo7(File dir, File parent) throws IOException { String canonicalPath = dir().getCanonicalPath(); String canonicalPath2 = dir().getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } - if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $ Alert + if (!canonicalPath2.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -75,7 +75,7 @@ File getChild() { void foo8(File parent) throws IOException { String canonicalPath = getChild().getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + getChild().getCanonicalPath()); } } @@ -94,7 +94,7 @@ void foo10(File parent) throws IOException { void foo11(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); - if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -102,10 +102,10 @@ void foo11(File parent) throws IOException { void foo12(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath(); String parentCanonical2 = parent.getCanonicalPath(); - if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } - if (!dir().getCanonicalPath().startsWith(parentCanonical2)) { // $ Alert + if (!dir().getCanonicalPath().startsWith(parentCanonical2)) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -173,7 +173,7 @@ void foo18(File dir, File parent, boolean branch) throws IOException { void foo19(File parent) throws IOException { String parentCanonical = parent.getCanonicalPath() + "/potato"; - if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert + if (!dir().getCanonicalPath().startsWith(parentCanonical)) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -191,7 +191,7 @@ InputStream foo20() { String filePath = sb.toString(); File encodedFile = new File(filePath); try { - if (!encodedFile.getCanonicalPath().startsWith(cacheDir.getCanonicalPath())) { // $ Alert + if (!encodedFile.getCanonicalPath().startsWith(cacheDir.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] return null; } return Files.newInputStream(encodedFile.toPath()); @@ -209,7 +209,7 @@ void foo21(File parent) throws IOException { void foo22(File dir2, File parent, boolean conditional) throws IOException { String canonicalPath = conditional ? dir().getCanonicalPath() : dir2.getCanonicalPath(); - if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert + if (!canonicalPath.startsWith(parent.getCanonicalPath())) { // $ Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal] throw new IOException("Invalid directory: " + dir().getCanonicalPath()); } } @@ -228,6 +228,14 @@ void foo24(File parent) throws IOException { } } + void foo25(File parent) throws IOException { + String path = parent.getCanonicalPath(); + path += File.separator; + if (!dir().getCanonicalPath().startsWith(path)) { + throw new IOException("Invalid directory: " + dir().getCanonicalPath()); + } + } + public void doesNotFlagOptimalSafeVersion(File parent) throws IOException { if (!dir().toPath().normalize().startsWith(parent.toPath())) { // Safe throw new IOException("Path traversal attempt: " + dir().getCanonicalPath()); diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.expected index f7277e3079c7..a39920b9065d 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.expected @@ -4,10 +4,10 @@ | ArithmeticTainted.java:50:17:50:24 | ... + ... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:50:17:50:20 | data | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | | ArithmeticTainted.java:71:17:71:27 | ... + ... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:71:17:71:23 | herring | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | | ArithmeticTainted.java:95:37:95:46 | ... + ... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:95:37:95:40 | data | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | -| ArithmeticTainted.java:127:3:127:8 | ...++ | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:127:3:127:6 | data | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | -| ArithmeticTainted.java:131:3:131:8 | ++... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:131:5:131:8 | data | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | -| ArithmeticTainted.java:135:3:135:8 | ...-- | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:135:3:135:6 | data | This arithmetic expression depends on a $@, potentially causing an underflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | -| ArithmeticTainted.java:139:3:139:8 | --... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:139:5:139:8 | data | This arithmetic expression depends on a $@, potentially causing an underflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | +| ArithmeticTainted.java:129:3:129:8 | ...++ | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:129:3:129:6 | data | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | +| ArithmeticTainted.java:133:3:133:8 | ++... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:133:5:133:8 | data | This arithmetic expression depends on a $@, potentially causing an overflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | +| ArithmeticTainted.java:137:3:137:8 | ...-- | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:137:3:137:6 | data | This arithmetic expression depends on a $@, potentially causing an underflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | +| ArithmeticTainted.java:141:3:141:8 | --... | ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:141:5:141:8 | data | This arithmetic expression depends on a $@, potentially causing an underflow. | ArithmeticTainted.java:17:46:17:54 | System.in | user-provided value | edges | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | provenance | | | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | provenance | | @@ -38,14 +38,14 @@ edges | ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | ArithmeticTainted.java:66:18:66:34 | getData(...) : Number | provenance | | | ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | Holder.java:16:13:16:19 | parameter this : Holder [dat] : Number | provenance | | | ArithmeticTainted.java:66:18:66:34 | getData(...) : Number | ArithmeticTainted.java:71:17:71:23 | herring | provenance | | -| ArithmeticTainted.java:118:9:118:12 | data : Number | ArithmeticTainted.java:125:26:125:33 | data : Number | provenance | | -| ArithmeticTainted.java:119:10:119:13 | data : Number | ArithmeticTainted.java:129:27:129:34 | data : Number | provenance | | -| ArithmeticTainted.java:120:10:120:13 | data : Number | ArithmeticTainted.java:133:27:133:34 | data : Number | provenance | | -| ArithmeticTainted.java:121:10:121:13 | data : Number | ArithmeticTainted.java:137:27:137:34 | data : Number | provenance | | -| ArithmeticTainted.java:125:26:125:33 | data : Number | ArithmeticTainted.java:127:3:127:6 | data | provenance | | -| ArithmeticTainted.java:129:27:129:34 | data : Number | ArithmeticTainted.java:131:5:131:8 | data | provenance | | -| ArithmeticTainted.java:133:27:133:34 | data : Number | ArithmeticTainted.java:135:3:135:6 | data | provenance | | -| ArithmeticTainted.java:137:27:137:34 | data : Number | ArithmeticTainted.java:139:5:139:8 | data | provenance | | +| ArithmeticTainted.java:118:9:118:12 | data : Number | ArithmeticTainted.java:127:26:127:33 | data : Number | provenance | | +| ArithmeticTainted.java:119:10:119:13 | data : Number | ArithmeticTainted.java:131:27:131:34 | data : Number | provenance | | +| ArithmeticTainted.java:120:10:120:13 | data : Number | ArithmeticTainted.java:135:27:135:34 | data : Number | provenance | | +| ArithmeticTainted.java:121:10:121:13 | data : Number | ArithmeticTainted.java:139:27:139:34 | data : Number | provenance | | +| ArithmeticTainted.java:127:26:127:33 | data : Number | ArithmeticTainted.java:129:3:129:6 | data | provenance | | +| ArithmeticTainted.java:131:27:131:34 | data : Number | ArithmeticTainted.java:133:5:133:8 | data | provenance | | +| ArithmeticTainted.java:135:27:135:34 | data : Number | ArithmeticTainted.java:137:3:137:6 | data | provenance | | +| ArithmeticTainted.java:139:27:139:34 | data : Number | ArithmeticTainted.java:141:5:141:8 | data | provenance | | | Holder.java:12:22:12:26 | d : Number | Holder.java:13:9:13:9 | d : Number | provenance | | | Holder.java:13:3:13:5 | this <.field> [post update] : Holder [dat] : Number | Holder.java:12:14:12:20 | parameter this [Return] : Holder [dat] : Number | provenance | | | Holder.java:13:9:13:9 | d : Number | Holder.java:13:3:13:5 | this <.field> [post update] : Holder [dat] : Number | provenance | | @@ -86,14 +86,14 @@ nodes | ArithmeticTainted.java:119:10:119:13 | data : Number | semmle.label | data : Number | | ArithmeticTainted.java:120:10:120:13 | data : Number | semmle.label | data : Number | | ArithmeticTainted.java:121:10:121:13 | data : Number | semmle.label | data : Number | -| ArithmeticTainted.java:125:26:125:33 | data : Number | semmle.label | data : Number | -| ArithmeticTainted.java:127:3:127:6 | data | semmle.label | data | -| ArithmeticTainted.java:129:27:129:34 | data : Number | semmle.label | data : Number | -| ArithmeticTainted.java:131:5:131:8 | data | semmle.label | data | -| ArithmeticTainted.java:133:27:133:34 | data : Number | semmle.label | data : Number | -| ArithmeticTainted.java:135:3:135:6 | data | semmle.label | data | -| ArithmeticTainted.java:137:27:137:34 | data : Number | semmle.label | data : Number | -| ArithmeticTainted.java:139:5:139:8 | data | semmle.label | data | +| ArithmeticTainted.java:127:26:127:33 | data : Number | semmle.label | data : Number | +| ArithmeticTainted.java:129:3:129:6 | data | semmle.label | data | +| ArithmeticTainted.java:131:27:131:34 | data : Number | semmle.label | data : Number | +| ArithmeticTainted.java:133:5:133:8 | data | semmle.label | data | +| ArithmeticTainted.java:135:27:135:34 | data : Number | semmle.label | data : Number | +| ArithmeticTainted.java:137:3:137:6 | data | semmle.label | data | +| ArithmeticTainted.java:139:27:139:34 | data : Number | semmle.label | data : Number | +| ArithmeticTainted.java:141:5:141:8 | data | semmle.label | data | | Holder.java:12:14:12:20 | parameter this [Return] : Holder [dat] : Number | semmle.label | parameter this [Return] : Holder [dat] : Number | | Holder.java:12:22:12:26 | d : Number | semmle.label | d : Number | | Holder.java:13:3:13:5 | this <.field> [post update] : Holder [dat] : Number | semmle.label | this <.field> [post update] : Holder [dat] : Number | diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.java b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.java index 5fde69929b26..04020aac31f4 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.java +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTainted.java @@ -119,6 +119,8 @@ public void main(String[] args) { test2(data); test3(data); test4(data); + boundsCheckGood(null, data, 5); + boundsCheckGood2(null, data, 5); } } @@ -138,4 +140,18 @@ public static void test4(int data) { // BAD: may underflow if input data is very small --data; } + + public static void boundsCheckGood(byte[] bs, int off, int len) { + // GOOD: arithmetic used directly in a bounds check, not as a computation + if (off + len > bs.length) { + throw new IndexOutOfBoundsException(); + } + } + + public static void boundsCheckGood2(int[] arr, int offset, int count) { + // GOOD: subtraction used directly in a bounds check + if (offset - count < 0) { + throw new IndexOutOfBoundsException(); + } + } } diff --git a/java/ql/test/query-tests/security/CWE-327/semmle/tests/Test.java b/java/ql/test/query-tests/security/CWE-327/semmle/tests/Test.java index 2f66d4996393..23aff65161c9 100644 --- a/java/ql/test/query-tests/security/CWE-327/semmle/tests/Test.java +++ b/java/ql/test/query-tests/security/CWE-327/semmle/tests/Test.java @@ -46,6 +46,48 @@ public void test() { cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encrypted = cipher.doFinal(input.getBytes("UTF-8")); + + KeyPairGenerator keyPairGenerator; + + // GOOD: EC is a secure algorithm for key pair generation + keyPairGenerator = KeyPairGenerator.getInstance("EC"); + + // GOOD: ECDSA is a secure signature algorithm + Signature ecdsaSig = Signature.getInstance("ECDSA"); + + // GOOD: ECDH is a secure algorithm for key agreement + KeyAgreement ecdhKa = KeyAgreement.getInstance("ECDH"); + + // GOOD: EdDSA is a secure algorithm (Edwards-curve Digital Signature Algorithm) + keyPairGenerator = KeyPairGenerator.getInstance("EdDSA"); + + // GOOD: Ed25519 is a secure algorithm for key pair generation + keyPairGenerator = KeyPairGenerator.getInstance("Ed25519"); + + // GOOD: Ed448 is a secure algorithm for key pair generation + keyPairGenerator = KeyPairGenerator.getInstance("Ed448"); + + // GOOD: XDH is a secure algorithm for key agreement + KeyAgreement xdhKa = KeyAgreement.getInstance("XDH"); + + // GOOD: X25519 is a secure algorithm for key agreement + KeyAgreement x25519Ka = KeyAgreement.getInstance("X25519"); + + // GOOD: X448 is a secure algorithm for key agreement + KeyAgreement x448Ka = KeyAgreement.getInstance("X448"); + + // GOOD: SHA256withECDSA is a secure signature algorithm + Signature sha256Ecdsa = Signature.getInstance("SHA256withECDSA"); + + // GOOD: HMAC-based SecretKeySpec should not be flagged + new SecretKeySpec(null, "HMACSHA1"); + new SecretKeySpec(null, "HMACSHA256"); + new SecretKeySpec(null, "HMACSHA384"); + new SecretKeySpec(null, "SHA384withECDSA"); + + // GOOD: PBKDF2 key derivation is a secure algorithm + SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); + } catch (Exception e) { // fail } diff --git a/java/ql/test/query-tests/security/CWE-611/WstxInputFactoryTests.java b/java/ql/test/query-tests/security/CWE-611/WstxInputFactoryTests.java new file mode 100644 index 000000000000..b64ec54f5b78 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-611/WstxInputFactoryTests.java @@ -0,0 +1,44 @@ +import java.net.Socket; + +import javax.xml.stream.XMLInputFactory; + +import com.ctc.wstx.stax.WstxInputFactory; + +public class WstxInputFactoryTests { + + public void unconfiguredFactory(Socket sock) throws Exception { + WstxInputFactory factory = new WstxInputFactory(); + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert + } + + public void safeFactory(Socket sock) throws Exception { + WstxInputFactory factory = new WstxInputFactory(); + factory.setProperty(XMLInputFactory.SUPPORT_DTD, false); + factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false); + factory.createXMLStreamReader(sock.getInputStream()); // safe + factory.createXMLEventReader(sock.getInputStream()); // safe + } + + public void safeFactoryStringProperties(Socket sock) throws Exception { + WstxInputFactory factory = new WstxInputFactory(); + factory.setProperty("javax.xml.stream.supportDTD", false); + factory.setProperty("javax.xml.stream.isSupportingExternalEntities", false); + factory.createXMLStreamReader(sock.getInputStream()); // safe + factory.createXMLEventReader(sock.getInputStream()); // safe + } + + public void misConfiguredFactory(Socket sock) throws Exception { + WstxInputFactory factory = new WstxInputFactory(); + factory.setProperty("javax.xml.stream.isSupportingExternalEntities", false); + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert + } + + public void misConfiguredFactory2(Socket sock) throws Exception { + WstxInputFactory factory = new WstxInputFactory(); + factory.setProperty(XMLInputFactory.SUPPORT_DTD, false); + factory.createXMLStreamReader(sock.getInputStream()); // $ Alert + factory.createXMLEventReader(sock.getInputStream()); // $ Alert + } +} diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.expected b/java/ql/test/query-tests/security/CWE-611/XXE.expected index a1d0725321d9..87e033c129a7 100644 --- a/java/ql/test/query-tests/security/CWE-611/XXE.expected +++ b/java/ql/test/query-tests/security/CWE-611/XXE.expected @@ -89,6 +89,12 @@ | TransformerTests.java:141:21:141:73 | new SAXSource(...) | TransformerTests.java:141:51:141:71 | getInputStream(...) : InputStream | TransformerTests.java:141:21:141:73 | new SAXSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | TransformerTests.java:141:51:141:71 | getInputStream(...) | user-provided value | | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | UnmarshallerTests.java:29:18:29:38 | getInputStream(...) | user-provided value | | ValidatorTests.java:22:28:22:33 | source | ValidatorTests.java:17:49:17:72 | getInputStream(...) : ServletInputStream | ValidatorTests.java:22:28:22:33 | source | XML parsing depends on a $@ without guarding against external entity expansion. | ValidatorTests.java:17:49:17:72 | getInputStream(...) | user-provided value | +| WstxInputFactoryTests.java:11:35:11:55 | getInputStream(...) | WstxInputFactoryTests.java:11:35:11:55 | getInputStream(...) | WstxInputFactoryTests.java:11:35:11:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | WstxInputFactoryTests.java:11:35:11:55 | getInputStream(...) | user-provided value | +| WstxInputFactoryTests.java:12:34:12:54 | getInputStream(...) | WstxInputFactoryTests.java:12:34:12:54 | getInputStream(...) | WstxInputFactoryTests.java:12:34:12:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | WstxInputFactoryTests.java:12:34:12:54 | getInputStream(...) | user-provided value | +| WstxInputFactoryTests.java:34:35:34:55 | getInputStream(...) | WstxInputFactoryTests.java:34:35:34:55 | getInputStream(...) | WstxInputFactoryTests.java:34:35:34:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | WstxInputFactoryTests.java:34:35:34:55 | getInputStream(...) | user-provided value | +| WstxInputFactoryTests.java:35:34:35:54 | getInputStream(...) | WstxInputFactoryTests.java:35:34:35:54 | getInputStream(...) | WstxInputFactoryTests.java:35:34:35:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | WstxInputFactoryTests.java:35:34:35:54 | getInputStream(...) | user-provided value | +| WstxInputFactoryTests.java:41:35:41:55 | getInputStream(...) | WstxInputFactoryTests.java:41:35:41:55 | getInputStream(...) | WstxInputFactoryTests.java:41:35:41:55 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | WstxInputFactoryTests.java:41:35:41:55 | getInputStream(...) | user-provided value | +| WstxInputFactoryTests.java:42:34:42:54 | getInputStream(...) | WstxInputFactoryTests.java:42:34:42:54 | getInputStream(...) | WstxInputFactoryTests.java:42:34:42:54 | getInputStream(...) | XML parsing depends on a $@ without guarding against external entity expansion. | WstxInputFactoryTests.java:42:34:42:54 | getInputStream(...) | user-provided value | | XMLDecoderTests.java:18:9:18:18 | xmlDecoder | XMLDecoderTests.java:16:49:16:72 | getInputStream(...) : ServletInputStream | XMLDecoderTests.java:18:9:18:18 | xmlDecoder | XML parsing depends on a $@ without guarding against external entity expansion. | XMLDecoderTests.java:16:49:16:72 | getInputStream(...) | user-provided value | | XMLReaderTests.java:16:18:16:55 | new InputSource(...) | XMLReaderTests.java:16:34:16:54 | getInputStream(...) : InputStream | XMLReaderTests.java:16:18:16:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:16:34:16:54 | getInputStream(...) | user-provided value | | XMLReaderTests.java:56:18:56:55 | new InputSource(...) | XMLReaderTests.java:56:34:56:54 | getInputStream(...) : InputStream | XMLReaderTests.java:56:18:56:55 | new InputSource(...) | XML parsing depends on a $@ without guarding against external entity expansion. | XMLReaderTests.java:56:34:56:54 | getInputStream(...) | user-provided value | @@ -390,6 +396,12 @@ nodes | ValidatorTests.java:21:31:21:66 | new StreamSource(...) : StreamSource | semmle.label | new StreamSource(...) : StreamSource | | ValidatorTests.java:21:48:21:65 | servletInputStream : ServletInputStream | semmle.label | servletInputStream : ServletInputStream | | ValidatorTests.java:22:28:22:33 | source | semmle.label | source | +| WstxInputFactoryTests.java:11:35:11:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| WstxInputFactoryTests.java:12:34:12:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| WstxInputFactoryTests.java:34:35:34:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| WstxInputFactoryTests.java:35:34:35:54 | getInputStream(...) | semmle.label | getInputStream(...) | +| WstxInputFactoryTests.java:41:35:41:55 | getInputStream(...) | semmle.label | getInputStream(...) | +| WstxInputFactoryTests.java:42:34:42:54 | getInputStream(...) | semmle.label | getInputStream(...) | | XMLDecoderTests.java:16:49:16:72 | getInputStream(...) : ServletInputStream | semmle.label | getInputStream(...) : ServletInputStream | | XMLDecoderTests.java:17:33:17:66 | new XMLDecoder(...) : XMLDecoder | semmle.label | new XMLDecoder(...) : XMLDecoder | | XMLDecoderTests.java:17:48:17:65 | servletInputStream : ServletInputStream | semmle.label | servletInputStream : ServletInputStream | diff --git a/java/ql/test/query-tests/security/CWE-611/options b/java/ql/test/query-tests/security/CWE-611/options index 1480b49d7168..190e6b2af0c6 100644 --- a/java/ql/test/query-tests/security/CWE-611/options +++ b/java/ql/test/query-tests/security/CWE-611/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jdom-1.1.3:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/simple-xml-2.7.1:${testdir}/../../../stubs/jaxb-api-2.3.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/apache-commons-digester3-3.2:${testdir}/../../../stubs/servlet-api-2.4/:${testdir}/../../../stubs/rundeck-api-java-client-13.2:${testdir}/../../../stubs/springframework-5.8.x/:${testdir}/../../../stubs/mdht-1.2.0/ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jdom-1.1.3:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/simple-xml-2.7.1:${testdir}/../../../stubs/jaxb-api-2.3.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/apache-commons-digester3-3.2:${testdir}/../../../stubs/servlet-api-2.4/:${testdir}/../../../stubs/rundeck-api-java-client-13.2:${testdir}/../../../stubs/springframework-5.8.x/:${testdir}/../../../stubs/mdht-1.2.0/:${testdir}/../../../stubs/woodstox-core-6.4.0 diff --git a/java/ql/test/query-tests/security/CWE-676/semmle/tests/options b/java/ql/test/query-tests/security/CWE-676/semmle/tests/options new file mode 100644 index 000000000000..3d6e630aa73e --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-676/semmle/tests/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args --release 25 diff --git a/java/ql/test/stubs/woodstox-core-6.4.0/com/ctc/wstx/stax/WstxInputFactory.java b/java/ql/test/stubs/woodstox-core-6.4.0/com/ctc/wstx/stax/WstxInputFactory.java new file mode 100644 index 000000000000..979d76b6e202 --- /dev/null +++ b/java/ql/test/stubs/woodstox-core-6.4.0/com/ctc/wstx/stax/WstxInputFactory.java @@ -0,0 +1,49 @@ +// Generated automatically from com.ctc.wstx.stax.WstxInputFactory for testing purposes + +package com.ctc.wstx.stax; + +import java.io.InputStream; +import java.io.Reader; +import javax.xml.stream.EventFilter; +import javax.xml.stream.StreamFilter; +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.XMLReporter; +import javax.xml.stream.XMLResolver; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.util.XMLEventAllocator; +import javax.xml.transform.Source; +import org.codehaus.stax2.XMLInputFactory2; + +public class WstxInputFactory extends XMLInputFactory2 { + public WstxInputFactory() {} + + public XMLStreamReader createXMLStreamReader(InputStream in) throws XMLStreamException { return null; } + public XMLStreamReader createXMLStreamReader(InputStream in, String enc) throws XMLStreamException { return null; } + public XMLStreamReader createXMLStreamReader(Reader r) throws XMLStreamException { return null; } + public XMLStreamReader createXMLStreamReader(Source src) throws XMLStreamException { return null; } + public XMLStreamReader createXMLStreamReader(String systemId, InputStream in) throws XMLStreamException { return null; } + public XMLStreamReader createXMLStreamReader(String systemId, Reader r) throws XMLStreamException { return null; } + + public XMLEventReader createXMLEventReader(InputStream in) throws XMLStreamException { return null; } + public XMLEventReader createXMLEventReader(InputStream in, String enc) throws XMLStreamException { return null; } + public XMLEventReader createXMLEventReader(Reader r) throws XMLStreamException { return null; } + public XMLEventReader createXMLEventReader(Source src) throws XMLStreamException { return null; } + public XMLEventReader createXMLEventReader(String systemId, InputStream in) throws XMLStreamException { return null; } + public XMLEventReader createXMLEventReader(String systemId, Reader r) throws XMLStreamException { return null; } + public XMLEventReader createXMLEventReader(XMLStreamReader sr) throws XMLStreamException { return null; } + + public XMLStreamReader createFilteredReader(XMLStreamReader reader, StreamFilter filter) { return null; } + public XMLEventReader createFilteredReader(XMLEventReader reader, EventFilter filter) { return null; } + + public void setProperty(String name, Object value) {} + public Object getProperty(String name) { return null; } + public boolean isPropertySupported(String name) { return false; } + + public XMLResolver getXMLResolver() { return null; } + public void setXMLResolver(XMLResolver r) {} + public XMLReporter getXMLReporter() { return null; } + public void setXMLReporter(XMLReporter r) {} + public XMLEventAllocator getEventAllocator() { return null; } + public void setEventAllocator(XMLEventAllocator a) {} +} diff --git a/java/ql/test/stubs/woodstox-core-6.4.0/org/codehaus/stax2/XMLInputFactory2.java b/java/ql/test/stubs/woodstox-core-6.4.0/org/codehaus/stax2/XMLInputFactory2.java new file mode 100644 index 000000000000..6b94d00d03ac --- /dev/null +++ b/java/ql/test/stubs/woodstox-core-6.4.0/org/codehaus/stax2/XMLInputFactory2.java @@ -0,0 +1,9 @@ +// Generated automatically from org.codehaus.stax2.XMLInputFactory2 for testing purposes + +package org.codehaus.stax2; + +import javax.xml.stream.XMLInputFactory; + +public abstract class XMLInputFactory2 extends XMLInputFactory { + protected XMLInputFactory2() {} +} diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 01ac46e87c50..fedb0b9b587f 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.6.27 + +No user-facing changes. + +## 2.6.26 + +No user-facing changes. + +## 2.6.25 + +No user-facing changes. + ## 2.6.24 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/2.6.25.md b/javascript/ql/lib/change-notes/released/2.6.25.md new file mode 100644 index 000000000000..31ebec623f80 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.25.md @@ -0,0 +1,3 @@ +## 2.6.25 + +No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.26.md b/javascript/ql/lib/change-notes/released/2.6.26.md new file mode 100644 index 000000000000..0d09a9032c0e --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.26.md @@ -0,0 +1,3 @@ +## 2.6.26 + +No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.27.md b/javascript/ql/lib/change-notes/released/2.6.27.md new file mode 100644 index 000000000000..94482b5ebe68 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.27.md @@ -0,0 +1,3 @@ +## 2.6.27 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index ce80dc3be1c6..2ce86b10a85d 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.24 +lastReleaseVersion: 2.6.27 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 70d0ad7df765..e0834c056d11 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.24 +version: 2.6.28-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll index 60fe40e716d0..155fb4b7c786 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll @@ -10,6 +10,10 @@ * `type, path, kind` * - Summaries: * `type, path, input, output, kind` + * - Barriers: + * `type, path, kind` + * - BarrierGuards: + * `type, path, acceptingValue, kind` * - Types: * `type1, type2, path` * @@ -42,7 +46,8 @@ * 3. The `input` and `output` columns specify how data enters and leaves the element selected by the * first `(type, path)` tuple. Both strings are `.`-separated access paths * of the same syntax as the `path` column. - * 4. The `kind` column is a tag that can be referenced from QL to determine to + * 4. The `acceptingValue` column of barrier guard models specifies which branch of the guard is blocking flow. It can be "true" or "false". + * 5. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources `"remote"` indicates a default remote flow source, and for summaries * `"taint"` indicates a default additional taint step and `"value"` indicates a @@ -355,11 +360,11 @@ private predicate barrierModel(string type, string path, string kind, string mod /** Holds if a barrier guard model exists for the given parameters. */ private predicate barrierGuardModel( - string type, string path, string branch, string kind, string model + string type, string path, string acceptingValue, string kind, string model ) { // No deprecation adapter for barrier models, they were not around back then. exists(QlBuiltins::ExtensionId madId | - Extensions::barrierGuardModel(type, path, branch, kind, madId) and + Extensions::barrierGuardModel(type, path, acceptingValue, kind, madId) and model = "MaD:" + madId.toString() ) } @@ -783,16 +788,16 @@ module ModelOutput { } /** - * Holds if a barrier model contributed `barrier` with the given `kind` for the given `branch`. + * Holds if a barrier model contributed `barrier` with the given `kind` for the given `acceptingValue`. */ cached - API::Node getABarrierGuardNode(string kind, boolean branch, string model) { - exists(string type, string path, string branch_str | - branch = true and branch_str = "true" + API::Node getABarrierGuardNode(string kind, boolean acceptingValue, string model) { + exists(string type, string path, string acceptingValue_str | + acceptingValue = true and acceptingValue_str = "true" or - branch = false and branch_str = "false" + acceptingValue = false and acceptingValue_str = "false" | - barrierGuardModel(type, path, branch_str, kind, model) and + barrierGuardModel(type, path, acceptingValue_str, kind, model) and result = getNodeFromPath(type, path) ) } @@ -856,12 +861,12 @@ module ModelOutput { API::Node getABarrierNode(string kind) { result = getABarrierNode(kind, _) } /** - * Holds if an external model contributed `barrier-guard` with the given `kind` and `branch`. + * Holds if an external model contributed `barrier-guard` with the given `kind` and `acceptingValue`. * * INTERNAL: Do not use. */ - API::Node getABarrierGuardNode(string kind, boolean branch) { - result = getABarrierGuardNode(kind, branch, _) + API::Node getABarrierGuardNode(string kind, boolean acceptingValue) { + result = getABarrierGuardNode(kind, acceptingValue, _) } /** diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll index 2a644aabb95d..8d8a4f5fd880 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -33,11 +33,11 @@ extensible predicate barrierModel( * of the given `kind` and `madId` is the data extension row number. * `path` is assumed to lead to a parameter of a call (possibly `self`), and * the call is guarding the parameter. - * `branch` is either `true` or `false`, indicating which branch of the guard - * is protecting the parameter. + * `acceptingValue` is either `true` or `false`, indicating which branch of + * the guard is protecting the parameter. */ extensible predicate barrierGuardModel( - string type, string path, string branch, string kind, QlBuiltins::ExtensionId madId + string type, string path, string acceptingValue, string kind, QlBuiltins::ExtensionId madId ); /** diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/MissingRateLimiting.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/MissingRateLimiting.qll index 5f4ad1b3d73e..8dd9c4831446 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/MissingRateLimiting.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/MissingRateLimiting.qll @@ -191,3 +191,21 @@ class RouteHandlerLimitedByRateLimiterFlexible extends RateLimitingMiddleware in private class FastifyRateLimiter extends RateLimitingMiddleware { FastifyRateLimiter() { this = DataFlow::moduleImport("fastify-rate-limit") } } + +/** + * An options object with a `rateLimit` config passed to a Fastify shorthand route method, + * such as `fastify.post('/path', { config: { rateLimit: { ... } } }, handler)`. + */ +private class FastifyPerRouteRateLimit extends RateLimitingMiddleware { + FastifyPerRouteRateLimit() { + exists(Fastify::RouteSetup setup | + not setup.getMethodName() = ["route", "addHook"] and + setup.getNumArgument() >= 3 and + this.flowsTo(setup.getArgument(1)) + | + exists(this.getAPropertySource("config").getAPropertySource("rateLimit")) + or + exists(this.getAPropertySource("rateLimit")) + ) + } +} diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 872cd055c519..29e6c8e8da32 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.3.7 + +No user-facing changes. + +## 2.3.6 + +No user-facing changes. + +## 2.3.5 + +No user-facing changes. + ## 2.3.4 No user-facing changes. diff --git a/javascript/ql/src/change-notes/2026-04-13-fastify-per-route-rate-limit.md b/javascript/ql/src/change-notes/2026-04-13-fastify-per-route-rate-limit.md new file mode 100644 index 000000000000..56d523885248 --- /dev/null +++ b/javascript/ql/src/change-notes/2026-04-13-fastify-per-route-rate-limit.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The query `js/missing-rate-limiting` now takes Fastify per-route + rate limiting into account. diff --git a/javascript/ql/src/change-notes/released/2.3.5.md b/javascript/ql/src/change-notes/released/2.3.5.md new file mode 100644 index 000000000000..f604db8b4a87 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.3.5.md @@ -0,0 +1,3 @@ +## 2.3.5 + +No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.3.6.md b/javascript/ql/src/change-notes/released/2.3.6.md new file mode 100644 index 000000000000..6a248a6ecb2d --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.3.6.md @@ -0,0 +1,3 @@ +## 2.3.6 + +No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.3.7.md b/javascript/ql/src/change-notes/released/2.3.7.md new file mode 100644 index 000000000000..5be2835f3988 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.3.7.md @@ -0,0 +1,3 @@ +## 2.3.7 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 1d7561c966cf..914cded08b38 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.3.4 +lastReleaseVersion: 2.3.7 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index d9fc2fd16d54..117fae183e99 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.3.4 +version: 2.3.8-dev groups: - javascript - queries 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 3d7bc2954eba..8d197d6e37f6 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 @@ -9,3 +9,4 @@ | tst.js:64:25:64:63 | functio ... req); } | This route handler performs $@, but is not rate-limited. | tst.js:64:46:64:60 | verifyUser(req) | authorization | | tst.js:76:25:76:53 | catchAs ... ndler1) | This route handler performs $@, but is not rate-limited. | tst.js:14:40:14:46 | login() | authorization | | 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:112:28:112:44 | 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 4f778afef684..5b4312bbbe0e 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 @@ -88,3 +88,25 @@ const fastifyApp = require('fastify')(); fastifyApp.get('/foo', expensiveHandler1); // $ Alert fastifyApp.register(require('fastify-rate-limit')); fastifyApp.get('/bar', expensiveHandler1); + +// Fastify per-route rate limiting via config.rateLimit +const fastifyApp2 = require('fastify')(); +fastifyApp2.register(require('@fastify/rate-limit')); + +fastifyApp2.post('/login', { + config: { + rateLimit: { + max: 3, + timeWindow: '1 minute' + } + } +}, expensiveHandler1); // OK - has per-route rateLimit config + +fastifyApp2.post('/signup', { + rateLimit: { + max: 5, + timeWindow: '1 minute' + } +}, expensiveHandler1); // OK - has per-route rateLimit directly in options + +fastifyApp2.post('/other', expensiveHandler1); // $ Alert - no rate limiting 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 e8bbd96a1c5a..19fb311dc775 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 dba6f5a53133..c447208da1e7 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 @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a6c3752b60f1..5646802d7c87 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 5f8c366ff875..a3db2f4cf0e2 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 598ea5da3af8..974053fa2105 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 ce4d5dc8abda..4e55fe14335f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 34ea952cd267..c2bbc00cde76 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 e3f89bafb19a..eb579ddb2fe5 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 7ddd490dffc2..7846c81d4b7f 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 @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c44b8554ad47..9e32f334ec28 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 231ff9c856ea..7e672468ebb7 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 94d462097184..f9a26a33bf39 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6528f5edc545..acd21224d113 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 b9b1384da8d3..1121f1c6fa81 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 5d8cb464baf5..a6e892fc3e2d 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 290610f2234d..92c05c115761 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 ad2cdfd44f64..d9b023658c41 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 @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 0dc7bb180d1d..de386a5fb136 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f14687523f04..fd1be0541615 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a450cf23e5b2..4363055577d1 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 @@ -80,6 +80,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 95353401fa84..ed2546bbd8af 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 @@ -85,6 +85,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 be5fade3f8b4..59c590873031 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 @@ -73,6 +73,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 7f8fb8721139..275c416bec69 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c2f3f0b2f1e5..04b9339ef8e8 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 49ca3826b701..3836976f89e6 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 @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6f981174de74..c36081cf1331 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 3a7b5dd13f31..8de318e16ce3 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 5ef3609e8659..afc560f32d27 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c693289d0d52..1fb4f82d40ba 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 89f35680ecdb..a350fe401c64 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 74c276c55b20..756de2c409a7 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c085df67e5c4..4c5de7875052 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 @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f2dc22a0d19b..f2b15bc166fd 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 @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a37116c26fba..475770bc9575 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 3917bb3d1651..3a5a51895a64 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 de6215593a4c..e35100f228a8 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 cf6899aafa06..9754167cc21f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 caf972ae7c80..813c2349a879 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 aba90d60cc20..1c3cf791f0f4 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 @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 469d31b2fec4..eab2d9200442 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f4b8a614e6f7..413560f9a9a4 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 82e1c57e2abb..41270f37827d 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 b0904b98ca8f..635e04fb829f 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 78e37e28693e..aa701fa5f9e1 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6406d8c7c690..51a7afa148f3 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 e5e5950f6439..95bb840fe66c 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 9107aa2b3644..e7cc05336f3f 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 326deb217507..dd7abf4671c5 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/py_deps/defs.bzl b/misc/bazel/3rdparty/py_deps/defs.bzl index 90b5a7b640c8..70e6051ac930 100644 --- a/misc/bazel/3rdparty/py_deps/defs.bzl +++ b/misc/bazel/3rdparty/py_deps/defs.bzl @@ -154,7 +154,7 @@ def all_crate_deps( 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.. + 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 @@ -408,6 +408,7 @@ _CONDITIONS = { "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"], 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 15d108fcbec5..2a2e575fd128 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel index d47c7298b755..29ac012c7637 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 b1ca8b4a42d0..4fe1a5ae3dba 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a133ae2799bd..165cf9da2fdb 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel index ebd0e844157f..bd6489b11e33 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel index bf8779d93c97..1739823d66f4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel index 4a81b5ca7fa1..d2c9594f554a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel index 2004f465f534..fe3361ea4119 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel index cc610fb0aa96..822d2d90ec43 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel index 5d8502998aa3..48f6fcce1426 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel index 32b9ff0d9c71..4a1e9ba79158 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel index b9e36249cf7f..4f70598af859 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.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 b0be5564bb5c..dfa4a0f21eb2 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel index 2be65fdc967e..8eb4be76a1b8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 17d891f3c2c9..089c4eb1ba86 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel index b9b25068599c..3c554f70f16d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel index 1bfb8cf8e159..1e9bde485ea4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel index cf4d5c3aaa19..cdf0bd3bcde6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 cfc997b9101c..1238ed9a02bf 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel index 04c40d430163..efe6232bbf79 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel index bd48b980b9a2..223a747c07a0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel index 05edb30b6088..6ef9d8ce9187 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel index b138a8c2f3db..250bb124b510 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel index e4ee9d80fbde..1a1a383b6390 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel index 7564be022f1a..802e8d678083 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel index 95acbcc53aaa..aefea796d4c3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel index ef757a77cacc..c747c1c3c4fc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel index 6df1698a8b41..66d5b40eb232 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel index 093182c2bdd5..3845773a67b4 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.1.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel index 09fe4a1d1949..d43c7b6b893d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6f83f8a31283..c7b526db2fb6 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 @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel index 61c81e205d31..7f20b012de96 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 01017b869eb4..2d796bef0b65 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel index 4f15fef15d68..b5bb39ea428c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel index 3b35ec7bf2b0..f1124f1108fa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel index 0b5f1b3f916e..41e2b0285ecc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel @@ -76,6 +76,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -142,6 +143,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # arm-unknown-linux-gnueabi ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # arm-unknown-linux-musleabi + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # armv7-linux-androideabi ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel index 07b70d3c00e3..1ef4252fc093 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel @@ -74,6 +74,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel index d4778d3ba494..f15804a69287 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel index 30ec5af6c1f4..d203b2121e87 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel @@ -64,6 +64,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel index 54194c27503f..a5a6cca1fe85 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel index 3fde0013d957..5956c5ff8f7f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 d7c24a33e091..fdbed4c6dc75 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6471b14ab04f..24e1b277c8e6 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel index 934e00d1c705..ca4a3e64b05f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f626b633f132..46c3fb30a597 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel index c179f7d4da09..3a6999466ae1 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.15.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel index 0208adb97be1..5d08b0a7259b 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.crossbeam-deque-0.8.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 index 627145e84eea..bded5897eb8e 100644 --- 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 52201cf8a8b3..18797ac294ca 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 @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel index 18ae31e2ecae..ba484864b400 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.21.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel index 4c292c1d7101..a9572a79a814 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel index 85fc26280aef..22e3ea592f61 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel index 84a6db16b684..99c3af7e2e4f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel index 9dfad53ceb57..c9a20e45392f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel index 68432d606f89..850713a2e455 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel index c021a09033ee..41aae8ab1ecc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 2d4581a50d97..d63db7ce6aa5 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 df9735fb0447..c47d2917bf68 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c810715cbc80..40f78950a02f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel index 7889b2bacd18..f0853ff36b75 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel index bc79eea8cb9d..c59d0a9a3162 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c9577c65f88a..c88ddeb86a83 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 2479888abce6..fc81caebaa98 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 4bfdf59c2866..6776c8f8f2fb 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 8b4274d602b0..cd8250d7be68 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a53f1999f2cf..3466817c9f05 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 b6a7ad2993b1..e98585004e60 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a68310e470d6..987bc9667d30 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 c262f8362d78..251b726dcc9d 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel index 3eebca66b451..7c25af547746 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 9f707fe589ab..4bb767ff10e1 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 @@ -72,6 +72,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -114,6 +115,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@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:arm-unknown-linux-musleabi": [ + "@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:armv7-linux-androideabi": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel index c04dd7706d65..8fc8c9a81e26 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel index 2e2ffe86c6a6..b41f13ec6e51 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel index 6b919bce0b8f..efc1a622b666 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel index c3eab8bc83ce..80252992a212 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 7d6f47fa04f4..8fc2c7d51b89 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel index e496ef247dad..7d4cbdcdecb7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel index 263df3abe827..657e1cd8a4aa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 ece66edee6c6..cb938292839d 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 060ec5e07d9f..484accede2c0 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 @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel index 47a353d3df92..d09e3ce7a4a5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -128,6 +129,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//: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.175//: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.175//: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")))) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel index 6ce6e3c97199..d26541b4fca7 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.3.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel index 8a77be50b7f4..0f83adee8e78 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 57dc7dc0b07e..83f146a6367b 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 dadefeac311a..a485aa4c1e62 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 b7b644fb6815..a51bce9391ac 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel index c4549368f6c8..badd7cb27219 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.10.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 78a22ad01401..a8e52fe9b29f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a7fa4e0c9e1c..0db33a0a48a1 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 2d7ca484cadc..702f649e1109 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel index 3f5d6f3e7112..97b2f5a5b94b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel index 2363e88f60ec..d66d4803a463 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 0a2ab447f067..fe120c046896 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel index 03ec6ed98b2e..4d6d31338250 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel index 78b39e2617e0..b0cb71a32999 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel index a99daf34fd7f..460c5de79a2a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel index a54e63d5cbc4..f5367ece66c1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel index 31ae1bf654d0..4416b8253053 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel index f74ecbdc568e..e7aa78908e36 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel index cdb3b7c9449f..08e96e830c79 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 de24b64e74be..44123d039086 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel index c79d20f3a9e3..afb404176fd2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel index 538648fc1ebd..7f44f43eac20 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f3c41fc7d205..13298f4aa2cd 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel index 339324bc8977..53cca2f56778 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 838f8dfd6ce6..662494b3e799 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel index 687f07ab93b3..6be5e3be9d96 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel index c9e73bfb91c4..9316b8d907c5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel index 4135430c0dd5..ee299069b1e2 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.9.7.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel index 178eb9ea801b..637041b51c3c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel index 8c01d09ec29c..ff3ee2442f86 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel index ff6f7e18e767..6e2c04598d0b 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.14.0.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel index 64e8b1bf5dba..57e6f406e902 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel index 6f7696c7983e..2546f6c8a77f 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.34.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -124,6 +125,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], 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 9659dec0e4b0..91f0e1ff55dc 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel index 3a2d6e01b808..91569ee35263 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel index 2163666cef7a..3943bd7e1b94 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.1.1.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel index a162ce9265a5..dadf3b16e818 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 078852cfe3c4..ab216fe6e836 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 204862e396e4..c81cfa64f50f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel index b00d5c2476cd..b63baa0019d2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6570e76db934..423b236b28f8 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel index 47e14a2a214e..47c9e11a8b9f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel index e369edeb4556..465339500a56 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 a2b546f05207..45798b37ab70 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel index b3bed18c81c4..26a8978cb1bf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 cc8ef40941ee..3e43dd562abe 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel index 03b04580ea97..2338b0077dad 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 3485ee47710e..8bac1c6d8e7b 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 @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6f1ca1a97da0..48322b462ca4 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel index 539da180bb79..4b6fcc8c864e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -132,6 +133,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], 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 8025e8f3b2c0..aa7509dd1fea 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 aec7c2bd00bc..51e1d88fe23f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6ed4e8027e77..ea49f4108a10 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 6d024f0d1d9f..0c838f2c6c31 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 @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -135,6 +136,10 @@ rust_library( "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel index 643378311dd3..f690f5b42495 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel index a12b6b5e5d74..03714107c726 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel @@ -73,6 +73,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel index 7f7685c0d5be..587cbdf418fa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 97a0e0a2f132..6b95a1d7743c 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 0cd3c5c33dd7..00293e65e2da 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -124,6 +125,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel index 686dd8f6a799..d10ec0a4bceb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel index dc02094678d0..968db54eafe3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 826c14777f0a..72de567588ff 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel index e9e1714252bc..58f67759d31e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel index b957f54c9504..05f864c1758a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel index d10b3e75896b..27bb71298a83 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel index 4bc7f4f9bb89..b93d8562fad0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel index e602d4cf3580..f2199e602c2b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -132,6 +133,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], 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 a806ba783a61..ccc776593759 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 d37a7916d11c..2b0175999d4a 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 @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel index 925777f7837f..8a8d1e9e3c97 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel index 3dcdb7841a8d..8ba85de58daa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel index 66c6d44fb9c4..120842ef4fbb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel index 96b02e10e076..1ad22b9f498f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel index 613c24f7cbcc..9234efd2e0e2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel index e03ef295d214..806b9c904c78 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel index c8afae58b26c..ba1a8734eaa8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel index 343962c45855..4a5d00884b13 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 9d58835a336b..4f67e7c1603c 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel index 8043ecaee06a..a4b01dcbc67f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel index b979922bfcf3..bb23160f9b8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 e97d61f229ba..9a309e0d43a0 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 @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel index bf89a7251f30..621cfb33ab4e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 index 778a94832fb8..d71877ee91cf 100644 --- 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel index de56de7393c7..6222aecac162 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel index 5d4250c41bc4..6d510190f025 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel index bf33fe6c8925..b8d5f8af922f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel index b3dcedb0ec57..f25a9e197681 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel index 88d4046a03a4..1ba187aeb8f2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel index 4971fc67e036..5ed4bd3f912f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel index c5eaeddb6830..987599aa9648 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel index bd2180aa2c50..e81038a00849 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel index 2c5fe2ea2442..60cece39191b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel @@ -73,6 +73,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel index a3eb4397b88c..35af421f0231 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel index 648552243c8e..50b4f2e87d15 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel index a138ff5c8877..c1272206d934 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel @@ -73,6 +73,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel index 8811733c6902..bd85f440ba5d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel @@ -77,6 +77,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel index 87e6fa6e904e..1593a5a8db93 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel @@ -78,6 +78,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel index c9b81576e38c..2dbbe4f77179 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel @@ -76,6 +76,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel index 6c023eedf9a6..66d015a2efbf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel @@ -76,6 +76,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel index 4542092adf99..9216daa25b57 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel index 137cdb42e448..cc43b8dd6306 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel @@ -72,6 +72,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel index 2fbff68fc773..bdf4d2970741 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel index e31fb6afe34a..2134a4d9cbc2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel index d3627c8e09d4..5210ea74ec8e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel index 62382cb6834c..12961c51aec0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel @@ -71,6 +71,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel index bda44ea0ec59..cb28397b3ab3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -111,6 +112,9 @@ rust_library( "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel index e54b95b9252d..8f551d7bd0b8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel @@ -73,6 +73,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel index d1a49cd5f957..ccd6eb8aefa3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel index fa784c663a86..0b47ce033472 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel index 4d81268c7baf..41c6f4f8cc72 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], @@ -131,6 +132,9 @@ rust_library( "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel index 2413110f2557..e5548afe6ab0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel index 4f0ccf66d07a..646c0f8c2f45 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel index 8688fe6dde81..2956a594ec11 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel index 4e3842c4f092..e5b2117f769c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel index bca4bbf5f853..67dd8bdd6104 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel index 8f09f78c4b09..e0c3859bfa37 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel index 1e5b380c8e83..adf2414f3af0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel index d95c304574ef..63fd0014d763 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel index 02b349c691ad..0ae8f72c2617 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel index b022fcc5c8f5..c867d354a77c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 293c42477819..29542077f377 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel index 4f235ca509ff..ec928fcac82c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel index aa00cedf8112..8b96305dfa7a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel index 283e6bf5a8fd..56045a5d8dde 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel index 67446df2cc35..2dff7cf54448 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel @@ -80,6 +80,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel index b921cf34fd26..77270d5287f7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel @@ -89,6 +89,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel index 8591bbb61ada..20579d899f00 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel @@ -73,6 +73,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel index 8dd1734cb0bc..45eaa325827e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 2e1e394414bc..c2d2a8ecadbd 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel index 3510d2a1ecb2..233e17d90857 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel index e28c0bc4178d..8a273994a826 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.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 adfeba65d212..0803a2e277ee 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 0120f3ea41b2..0bf752345746 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel index 03476d43a933..442f3ba05905 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.22.bazel @@ -65,6 +65,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel index 5b099b034d26..8550c107af8a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel index 6a57925fb36e..25fcd798c654 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel index 2fa60dda2d72..a3cc0e24a369 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel index 622d28177813..5d9bd4b09356 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 01d9cc94d56f..1ae75e4d777f 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 7229003a1d0b..69546680a9fb 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel index 757f0deab3c5..1fe84d175b39 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel index 6083076913dd..83ffd8145e73 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 e9f53614a255..fd65460b9772 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel index 1a284015551b..192a60880283 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel index b50da61882ee..a495f639d420 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel index c8b33b40bfe9..f21954648d62 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.228.bazel @@ -75,6 +75,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel index 61298a6ffb6a..099925888d56 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel index 4225c41bd210..5ccd9ac3b516 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel index 2052a7e95a1a..4f597ff13aca 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.228.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel index 55489195f291..f6d5b8be14a9 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.228.bazel @@ -64,6 +64,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel index c1beaef58968..eaee1ee4b284 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel @@ -132,6 +132,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel index cfd8057e4922..c5d9c5336e6a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel index 6e22434699e9..ac82ae1e149a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel index b34c3aebce92..2500ec6a49ba 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel @@ -71,6 +71,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel index adec2841a5fa..fe552ca2a284 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 0baae2b420dd..42f05a8553a0 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 d51e394269a8..504c16d3ed6b 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel index 9c85601923bf..1b3b26b2284d 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-1.3.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel index ef1a58e47b6f..9ffaf6afce71 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.1.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel index ba66fdd7cff3..954df9a6361e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel index d01e13293283..a726ed9d70a7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 702431638895..7f8b002061e4 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 3b807674bb66..2d86e10662ea 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel index b771972149bb..50cde9ced991 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel @@ -74,6 +74,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 100a3963472a..fa9cc6081a5a 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel index b8c9c3fa8901..37f2db5c2100 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.1.16.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 24c4e086a8ee..7dadc9eea336 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel index 20749982e650..c930359eefe1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel index d4da859d3483..3e1ae194c3b9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel @@ -72,6 +72,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel index 9bce5c77e1de..9d87f60d5d14 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel index 5fdccb311d12..01efca587901 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.9.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel index 095ed4f18cef..c3ee5405393c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel index c97b1837f2eb..57d22c65064b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel index 74e05258e0c2..08d61498717e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel index af42b4cbcb1d..896bfb0dd66a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel index f772d5dcdc2e..50cb78eec1e8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel index 73249141b0f2..04609ea84f5a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel index 2d752cc867d8..2673acb9f664 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel index 662a538d5b77..f0a1a3502d03 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel index 4a3081f858ac..b8a2048b67fb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel index 9920a989d979..3ad30e38760d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel index b25d3e86f9fe..61e730c79391 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel index 178d3e98f705..2bed2419242d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel index 48d06e879a6d..183d4cdd5865 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel index 16782034af38..8f607d2a3218 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel index e758ef8b8e92..c30ffdd41dfe 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 310b8a8a6d20..23e0eab2f412 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 292b84993bc4..9cd5f33c7cd2 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel index a118ed152c55..f0c94ca745b6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel @@ -78,6 +78,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel index aec4b5a2fa4f..fd97779c54c6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 4d3af159e798..c9dd60b03c0e 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 613b9ec6fd1d..6b9a7bf0582b 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel index 956e222a8f06..b950d1343c87 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f1b7c0f0118b..0b7ce3a9a29c 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 443ca47fa2c2..f939b4b9493c 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel index 480f760f1970..f1774bfb2f03 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f0af1025ad3b..1cf6200569b7 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel index 07d0afb6bd7b..0e5737ac61b9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 3a95385b7859..f677429c07b0 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 @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 473cc4ece536..680143ae6066 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel index 0879a535547a..75aa1ff078af 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel index fc560bc6d417..b621e469421f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 index 0d91b8333d95..c5725abf313e 100644 --- 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 089e3d57c69a..c5a1e9accf98 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel index 7f701fa2f9a3..043bed2ca2c0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel index f933e15e86f1..9ebd1462558c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 436b71c8e8b9..186b6221a216 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 @@ -64,6 +64,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 020a37ab9452..73f685b51f74 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 @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 43b406d09766..e742e2f5c3cf 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 5ac9c7ffbc7a..eaa6ea808b41 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 5e8b84da9757..1544ed0659e1 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel index 0b482a2c9b24..a5826f5cea2e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel index 113948d40941..9de7c19c3c21 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel index 244a8c5b3658..91c146904b67 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel @@ -75,6 +75,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel index b56eaba879c5..8bd3515bef87 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel index 5ee795fafbf4..3e207f054b06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel index 6930d6021e92..b2276e1a6386 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel index 948ae73962f6..bb7bc40362a1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 9a98af20dc9c..8730541d4ab4 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 @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel index 24e0b959158c..df42bab2c4fc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel index d48b53ff1423..4477961b0a8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel index 49937afe5810..cc4f0390337a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel index 977e17dfc3b4..469607d7d5ba 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel index f50b21712e58..e093251e525f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel index e5cec242987c..c86097f47b33 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel index 412effdf6dbc..1cfcc59e7edc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel index 7e31f8f08808..9aee199dc0a8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel @@ -72,6 +72,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel index f744a0937da7..b3222f2a6588 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 1d83a074bfd0..2008e7287ac1 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 @@ -75,6 +75,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel index ba1daef32f2f..a6f072e5b2a9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel @@ -77,6 +77,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel index cd7e40af7c32..82fb2acfc31d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel index d719429a8dc0..56bad6b11749 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel index ef1741d80d44..633de17430dd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel index 602461b5c351..00807d34df33 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel index f9a5577d6548..2aa1466d81d1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel index e69571a86c9d..e66c8c46945d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel index a1a0cbcda3a7..d30adc2538ff 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel index ae4bfaa33b33..437938cf2422 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel index 0188a24e0214..5d18a1d418f4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel index 27afbde319da..51364c25a81e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel index 06d2929a45f6..977fc0c5575b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel index 7772ad2658c3..ca459bbcb837 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel index 9520c81c38ee..b446bfdbb5b7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel index 8c35bce1d558..e8ffe9e4cbf1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel index b73914ecb7c5..31d4d5a8b6fd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel index 6d9af145384c..df9e56de61d5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel index 6cfc3a6ef6f8..99ef607128c6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel index 6886d7c018a5..ceaf0cb63373 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel index 3d741c7c1216..997a4bf65d4d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel index b1993606fb8e..4960067c91a8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel @@ -65,6 +65,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel index 91386e84b83e..28b6f63ce6fe 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel @@ -61,6 +61,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 33212c84bf0e..8770902865a6 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 @@ -66,6 +66,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel index 5a2396ce8c29..ecef8b52a73d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel index b1f81925305c..1529534e17b2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel index 9e99c8ff5caf..e0fee3f0f2ec 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel index 0b0f63f88cc2..11df1449c962 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel index 35d1978548b5..fbb85d748c8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel index 6e1f2b132548..ff9c1ef21429 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel index 94342aec8e36..1bcd44131b7e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel @@ -68,6 +68,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel index 931a800f5d0b..a8fe8f8c7e9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel @@ -69,6 +69,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel index 820d85f680fd..ace3c224c5df 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel @@ -61,6 +61,7 @@ rust_proc_macro( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 2cb5eb09652d..ff3e776a7f8a 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 @@ -67,6 +67,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 f51a0c3a30e7..eed1e00af815 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 @@ -71,6 +71,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], 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 060e52d4a080..32a06f947886 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 @@ -70,6 +70,7 @@ rust_library( "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [], "@rules_rust//rust/platform:armv7-linux-androideabi": [], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], "@rules_rust//rust/platform:i686-apple-darwin": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index a56d266ab746..bf11bc6c82fa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -154,7 +154,7 @@ def all_crate_deps( 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.. + 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 @@ -585,17 +585,18 @@ _CONDITIONS = { "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: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(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 = \"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 = \"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\")))": ["@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 = \"linux\", not(target_env = \"ohos\")))": ["@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-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 = \"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())": [], @@ -603,10 +604,10 @@ _CONDITIONS = { "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: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 = \"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 = \"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:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform: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(not(windows))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:aarch64-unknown-uefi", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-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(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(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_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\")": [], @@ -618,7 +619,7 @@ _CONDITIONS = { "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:armv7-linux-androideabi", "@rules_rust//rust/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(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"], diff --git a/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/MODULE.bazel b/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/MODULE.bazel deleted file mode 100644 index 22ffb59624dd..000000000000 --- a/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/MODULE.bazel +++ /dev/null @@ -1,151 +0,0 @@ -"""bazelbuild/rules_rust""" - -module( - name = "rules_rust", - version = "0.68.1.codeql.1", -) - -############################################################################### -## Core -############################################################################### - -bazel_dep(name = "bazel_features", version = "1.32.0") -bazel_dep(name = "bazel_skylib", version = "1.8.2") -bazel_dep(name = "platforms", version = "1.0.0") -bazel_dep(name = "rules_cc", version = "0.2.4") -bazel_dep(name = "rules_license", version = "1.0.0") -bazel_dep(name = "rules_shell", version = "0.6.1") -bazel_dep(name = "apple_support", version = "1.24.1", repo_name = "build_bazel_apple_support") - -internal_deps = use_extension("//rust/private:internal_extensions.bzl", "i") -use_repo( - internal_deps, - "rrra", - "rrra__anyhow-1.0.71", - "rrra__camino-1.1.9", - "rrra__clap-4.3.11", - "rrra__env_logger-0.10.0", - "rrra__itertools-0.11.0", - "rrra__log-0.4.19", - "rrra__serde-1.0.171", - "rrra__serde_json-1.0.102", - "rules_rust_tinyjson", -) - -cargo_internal_deps = use_extension("//cargo/private:internal_extensions.bzl", "i") -use_repo( - cargo_internal_deps, - "rrc", - "rrc__cargo-util-schemas-0.3.1", - "rrc__cargo_toml-0.20.5", - "rrc__pathdiff-0.1.0", - "rrc__semver-1.0.25", - "rrc__toml-0.8.20", -) - -rust = use_extension("//rust:extensions.bzl", "rust") -rust.toolchain(edition = "2021") -use_repo(rust, "rust_toolchains") - -register_toolchains( - "@rust_toolchains//:all", -) - -rust_host_tools = use_extension("//rust:extensions.bzl", "rust_host_tools") -rust_host_tools.host_tools( - name = "rust_host_tools", -) -use_repo( - rust_host_tools, - "rust_host_tools", -) - -rust_test = use_extension("//test:test_extensions.bzl", "rust_test", dev_dependency = True) -use_repo( - rust_test, - "buildkite_config", - "generated_inputs_in_external_repo", - "libc", - "rtra", - "rtra__serde-1.0.228", - "rtra__serde_json-1.0.145", - "rtvsc", - "rtvsc__serde-1.0.228", - "rtvsc__serde_json-1.0.145", - "rules_rust_test_load_arbitrary_tool", - "rules_rust_toolchain_test_target_json", -) - -bazel_dep(name = "rules_python", version = "1.9.0", dev_dependency = True) -bazel_dep(name = "rules_testing", version = "0.7.0", dev_dependency = True) -bazel_dep(name = "bazel_ci_rules", version = "1.0.0", dev_dependency = True) - -############################################################################### -## Crate Universe -############################################################################### - -crate_universe_internal_deps = use_extension( - "//crate_universe/private:internal_extensions.bzl", - "cu", -) -use_repo( - crate_universe_internal_deps, - "cargo_bazel.buildifier-darwin-amd64", - "cargo_bazel.buildifier-darwin-arm64", - "cargo_bazel.buildifier-linux-amd64", - "cargo_bazel.buildifier-linux-arm64", - "cargo_bazel.buildifier-windows-amd64.exe", - "cui", - "cui__anyhow-1.0.98", - "cui__camino-1.1.9", - "cui__cargo-lock-10.1.0", - "cui__cargo-platform-0.1.9", - "cui__cargo_metadata-0.19.2", - "cui__cargo_toml-0.22.1", - "cui__cfg-expr-0.18.0", - "cui__clap-4.5.37", - "cui__crates-index-3.7.0", - "cui__glob-0.3.2", - "cui__hex-0.4.3", - "cui__indoc-2.0.6", - "cui__itertools-0.14.0", - "cui__maplit-1.0.2", - "cui__normpath-1.3.0", - "cui__once_cell-1.21.3", - "cui__pathdiff-0.2.3", - "cui__regex-1.11.1", - "cui__semver-1.0.26", - "cui__serde-1.0.219", - "cui__serde_json-1.0.140", - "cui__serde_starlark-0.1.17", - "cui__sha2-0.10.8", - "cui__spdx-0.10.8", - "cui__tempfile-3.19.1", - "cui__tera-1.20.0", - "cui__textwrap-0.16.2", - "cui__toml-0.8.21", - "cui__tracing-0.1.41", - "cui__tracing-subscriber-0.3.19", - "cui__url-2.5.4", - "cui__walkdir-2.5.0", -) - -crate_universe_internal_non_repro_deps = use_extension( - "//crate_universe/private:internal_extensions.bzl", - "cu_nr", -) -use_repo( - crate_universe_internal_non_repro_deps, - "cargo_bazel_bootstrap", -) - -crate_universe_internal_dev_deps = use_extension( - "//crate_universe/private:internal_extensions.bzl", - "cu_dev", - dev_dependency = True, -) -use_repo( - crate_universe_internal_dev_deps, - "cross_rs", - "cross_rs_host_bin", -) diff --git a/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/patches/include_rmeta_in_stdlib.patch b/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/patches/include_rmeta_in_stdlib.patch deleted file mode 100644 index 3707cb51b636..000000000000 --- a/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/patches/include_rmeta_in_stdlib.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/rust/private/repository_utils.bzl b/rust/private/repository_utils.bzl -index 05b741947..f88074af6 100644 ---- a/rust/private/repository_utils.bzl -+++ b/rust/private/repository_utils.bzl -@@ -280,6 +280,7 @@ rust_stdlib_filegroup( - srcs = glob( - [ - "lib/rustlib/{target_triple}/lib/*.rlib", -+ "lib/rustlib/{target_triple}/lib/*.rmeta", - "lib/rustlib/{target_triple}/lib/*{dylib_ext}*", - "lib/rustlib/{target_triple}/lib/*{staticlib_ext}", - "lib/rustlib/{target_triple}/lib/self-contained/**", diff --git a/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/source.json b/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/source.json deleted file mode 100644 index 6048521ce2fd..000000000000 --- a/misc/bazel/registry/modules/rules_rust/0.68.1.codeql.1/source.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "integrity": "sha256-yKqAbPYGZnmsI0YyQe6ArWkiZdrQRl9RERy74wuJA1I=", - "strip_prefix": "", - "url": "https://github.com/bazelbuild/rules_rust/releases/download/0.68.1/rules_rust-0.68.1.tar.gz", - "patches": { - "include_rmeta_in_stdlib.patch": "sha256-7n8XHpfkLUMEbRG6lKqdhLWydsWlRRG+Ywkxk6LvY9c=" - }, - "patch_strip": 1 -} diff --git a/misc/bazel/registry/modules/rules_rust/metadata.json b/misc/bazel/registry/modules/rules_rust/metadata.json deleted file mode 100644 index deffe6f6dfad..000000000000 --- a/misc/bazel/registry/modules/rules_rust/metadata.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "homepage": "https://github.com/bazelbuild/rules_rust", - "maintainers": [], - "repository": [ - "github:bazelbuild/rules_rust" - ], - "versions": [ - "0.68.1.codeql.1" - ], - "yanked_versions": {} -} diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 8b32c3a6018d..4b73639b1f75 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.45.md b/misc/suite-helpers/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.46.md b/misc/suite-helpers/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.47.md b/misc/suite-helpers/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index dea7170bc375..1d8538023420 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.44 +version: 1.0.48-dev groups: shared warnOnImplicitThis: true diff --git a/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/old.dbscheme b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/old.dbscheme new file mode 100644 index 000000000000..eb5fc917c79b --- /dev/null +++ b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/old.dbscheme @@ -0,0 +1,1291 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * Run "make dbscheme" in python/extractor/ to regenerate. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- 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 +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string 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 +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- 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; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ +/* Import.is_lazy = 2, bool */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ +/* ImportStar.is_lazy = 2, bool */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* JoinedTemplateString.location = 0, location */ +/* JoinedTemplateString.parenthesised = 1, bool */ +/* JoinedTemplateString.strings = 2, TemplateString_list */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateString.location = 0, location */ +/* TemplateString.parenthesised = 1, bool */ +/* TemplateString.prefix = 2, str */ +/* TemplateString.values = 3, expr_list */ +/* TemplateString = TemplateStringList */ + +/* TemplateStringPart.location = 0, location */ +/* TemplateStringPart.parenthesised = 1, bool */ +/* TemplateStringPart.text = 2, str */ +/* TemplateStringList = JoinedTemplateString */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_TemplateString_lists(unique int id : @py_TemplateString_list, + unique int parent : @py_JoinedTemplateString ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation +| 40 = @py_TemplateString +| 41 = @py_JoinedTemplateString +| 42 = @py_TemplateStringPart; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Import | @py_ImportStar | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_TemplateString | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateString_list | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_TemplateString | @py_TemplateStringPart | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/py_bools.ql b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/py_bools.ql new file mode 100644 index 000000000000..725f01b97671 --- /dev/null +++ b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/py_bools.ql @@ -0,0 +1,12 @@ +class BoolParent extends @py_bool_parent { + string toString() { result = "BoolParent" } +} + +// Drop py_bools rows for Import and ImportStar parents, +// since the old schema does not include them in @py_bool_parent. +from BoolParent parent, int idx +where + py_bools(parent, idx) and + not parent instanceof @py_Import and + not parent instanceof @py_ImportStar +select parent, idx diff --git a/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/semmlecode.python.dbscheme b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/semmlecode.python.dbscheme new file mode 100644 index 000000000000..279cbb08d387 --- /dev/null +++ b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/semmlecode.python.dbscheme @@ -0,0 +1,1289 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * Run "make dbscheme" in python/extractor/ to regenerate. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- 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 +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string 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 +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- 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; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* JoinedTemplateString.location = 0, location */ +/* JoinedTemplateString.parenthesised = 1, bool */ +/* JoinedTemplateString.strings = 2, TemplateString_list */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateString.location = 0, location */ +/* TemplateString.parenthesised = 1, bool */ +/* TemplateString.prefix = 2, str */ +/* TemplateString.values = 3, expr_list */ +/* TemplateString = TemplateStringList */ + +/* TemplateStringPart.location = 0, location */ +/* TemplateStringPart.parenthesised = 1, bool */ +/* TemplateStringPart.text = 2, str */ +/* TemplateStringList = JoinedTemplateString */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_TemplateString_lists(unique int id : @py_TemplateString_list, + unique int parent : @py_JoinedTemplateString ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation +| 40 = @py_TemplateString +| 41 = @py_JoinedTemplateString +| 42 = @py_TemplateStringPart; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_TemplateString | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateString_list | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_TemplateString | @py_TemplateStringPart | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/upgrade.properties b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/upgrade.properties new file mode 100644 index 000000000000..4b9f991c51a3 --- /dev/null +++ b/python/downgrades/eb5fc917c79bb23ce2de4a022f3e566d57a91be9/upgrade.properties @@ -0,0 +1,3 @@ +description: Remove is_lazy field from Import and ImportStar (downgrade PEP 810 lazy imports) +compatibility: backwards +py_bools.rel: run py_bools.qlo diff --git a/python/extractor/semmle/python/ast.py b/python/extractor/semmle/python/ast.py index 1efe5cd1d197..93ab146cb6fe 100644 --- a/python/extractor/semmle/python/ast.py +++ b/python/extractor/semmle/python/ast.py @@ -845,17 +845,19 @@ def __init__(self, test, body, orelse): class Import(stmt): - __slots__ = "names", + __slots__ = "is_lazy", "names", - def __init__(self, names): + def __init__(self, names, is_lazy=False): self.names = names + self.is_lazy = is_lazy class ImportFrom(stmt): - __slots__ = "module", + __slots__ = "is_lazy", "module", - def __init__(self, module): + def __init__(self, module, is_lazy=False): self.module = module + self.is_lazy = is_lazy class Nonlocal(stmt): diff --git a/python/extractor/semmle/python/master.py b/python/extractor/semmle/python/master.py index 2c17de4e14cf..adb8d5c8a0d3 100755 --- a/python/extractor/semmle/python/master.py +++ b/python/extractor/semmle/python/master.py @@ -334,9 +334,11 @@ IfExp.field('orelse', expr, 'if-false expression') Import.field('names', alias_list, 'alias list') +Import.field('is_lazy', bool_, 'lazy') ImportFrom.set_name('ImportStar') ImportFrom.field('module', expr) +ImportFrom.field('is_lazy', bool_, 'lazy') ImportMember.field('module', expr) ImportMember.field('name', string) diff --git a/python/extractor/semmle/python/parser/ast.py b/python/extractor/semmle/python/parser/ast.py index 85d87108e353..e1843131554a 100644 --- a/python/extractor/semmle/python/parser/ast.py +++ b/python/extractor/semmle/python/parser/ast.py @@ -1432,7 +1432,7 @@ def rewrite_comp(node): elt = node.elt del node.elt else: - elt = ast.Tuple([node.value, node.key], LOAD) + elt = ast.Tuple([node.key, node.value], LOAD) elt.lineno = node.key.lineno elt.col_offset = node.key.col_offset elt._end = node.value._end diff --git a/python/extractor/semmle/python/parser/dump_ast.py b/python/extractor/semmle/python/parser/dump_ast.py index 23e1a973dfc7..802bed8fac24 100644 --- a/python/extractor/semmle/python/parser/dump_ast.py +++ b/python/extractor/semmle/python/parser/dump_ast.py @@ -72,8 +72,8 @@ def visit(self, node, level=0, visited=None): # just not print it in that case. if field == "parenthesised" and value is None: continue - # Likewise, the default value for `is_async` is `False`, so we don't need to print it. - if field == "is_async" and value is False: + # Likewise, the default value for `is_async` and `is_lazy` is `False`, so we don't need to print it. + if field in ("is_async", "is_lazy") and value is False: continue output.write("{} {}:".format(indent,field)) if isinstance(value, list): diff --git a/python/extractor/semmle/python/parser/tsg_parser.py b/python/extractor/semmle/python/parser/tsg_parser.py index 6ee8286c4c78..356faf249ed3 100644 --- a/python/extractor/semmle/python/parser/tsg_parser.py +++ b/python/extractor/semmle/python/parser/tsg_parser.py @@ -291,7 +291,7 @@ def create_placeholder_args(cls): if cls in (ast.Raise, ast.Ellipsis): return {} fields = ast_fields[cls] - args = {field: None for field in fields if field != "is_async"} + args = {field: None for field in fields if field not in ("is_async", "is_lazy")} for field in list_fields.get(cls, ()): args[field] = [] if cls in (ast.GeneratorExp, ast.ListComp, ast.SetComp, ast.DictComp): diff --git a/python/extractor/semmle/query_gen.py b/python/extractor/semmle/query_gen.py index b3fc2442e8a3..e7f9d280ad1f 100644 --- a/python/extractor/semmle/query_gen.py +++ b/python/extractor/semmle/query_gen.py @@ -211,6 +211,8 @@ def pop_least_value(nodes): * WARNING: Any modifications to this file will be lost. * Relations can be changed by modifying master.py. */ +overlay[local] +module; ''' def main(): diff --git a/python/extractor/tests/parser/lazy_imports_new.expected b/python/extractor/tests/parser/lazy_imports_new.expected new file mode 100644 index 000000000000..ae881c2c1b3c --- /dev/null +++ b/python/extractor/tests/parser/lazy_imports_new.expected @@ -0,0 +1,284 @@ +Module: [2, 0] - [35, 0] + body: [ + Import: [2, 0] - [2, 13] + is_lazy: True + names: [ + alias: [2, 12] - [2, 13] + value: + ImportExpr: [2, 12] - [2, 13] + level: 0 + name: 'a' + top: True + asname: + Name: [2, 12] - [2, 13] + variable: Variable('a', None) + ctx: Store + ] + Import: [4, 0] - [4, 18] + is_lazy: True + names: [ + alias: [4, 12] - [4, 14] + value: + ImportExpr: [4, 12] - [4, 14] + level: 0 + name: 'b1' + top: True + asname: + Name: [4, 12] - [4, 14] + variable: Variable('b1', None) + ctx: Store + alias: [4, 16] - [4, 18] + value: + ImportExpr: [4, 16] - [4, 18] + level: 0 + name: 'b2' + top: True + asname: + Name: [4, 16] - [4, 18] + variable: Variable('b2', None) + ctx: Store + ] + Import: [6, 0] - [6, 20] + is_lazy: True + names: [ + alias: [6, 12] - [6, 20] + value: + ImportExpr: [6, 12] - [6, 20] + level: 0 + name: 'c1.c2.c3' + top: True + asname: + Name: [6, 12] - [6, 20] + variable: Variable('c1', None) + ctx: Store + ] + Import: [8, 0] - [8, 23] + is_lazy: True + names: [ + alias: [8, 12] - [8, 23] + value: + ImportExpr: [8, 12] - [8, 17] + level: 0 + name: 'd1.d2' + top: False + asname: + Name: [8, 21] - [8, 23] + variable: Variable('d3', None) + ctx: Store + ] + Import: [10, 0] - [10, 20] + is_lazy: True + names: [ + alias: [10, 19] - [10, 20] + value: + ImportMember: [10, 19] - [10, 20] + module: + ImportExpr: [10, 10] - [10, 11] + level: 0 + name: 'e' + top: False + name: 'f' + asname: + Name: [10, 19] - [10, 20] + variable: Variable('f', None) + ctx: Store + ] + Import: [12, 0] - [12, 29] + is_lazy: True + names: [ + alias: [12, 23] - [12, 25] + value: + ImportMember: [12, 23] - [12, 25] + module: + ImportExpr: [12, 10] - [12, 15] + level: 0 + name: 'g1.g2' + top: False + name: 'h1' + asname: + Name: [12, 23] - [12, 25] + variable: Variable('h1', None) + ctx: Store + alias: [12, 27] - [12, 29] + value: + ImportMember: [12, 27] - [12, 29] + module: + ImportExpr: [12, 10] - [12, 15] + level: 0 + name: 'g1.g2' + top: False + name: 'h2' + asname: + Name: [12, 27] - [12, 29] + variable: Variable('h2', None) + ctx: Store + ] + Import: [14, 0] - [14, 32] + is_lazy: True + names: [ + alias: [14, 20] - [14, 28] + value: + ImportMember: [14, 20] - [14, 28] + module: + ImportExpr: [14, 10] - [14, 12] + level: 0 + name: 'i1' + top: False + name: 'j1' + asname: + Name: [14, 26] - [14, 28] + variable: Variable('j2', None) + ctx: Store + alias: [14, 30] - [14, 32] + value: + ImportMember: [14, 30] - [14, 32] + module: + ImportExpr: [14, 10] - [14, 12] + level: 0 + name: 'i1' + top: False + name: 'j3' + asname: + Name: [14, 30] - [14, 32] + variable: Variable('j3', None) + ctx: Store + ] + Import: [16, 0] - [16, 37] + is_lazy: True + names: [ + alias: [16, 25] - [16, 33] + value: + ImportMember: [16, 25] - [16, 33] + module: + ImportExpr: [16, 10] - [16, 17] + level: 2 + name: 'k1.k2' + top: False + name: 'l1' + asname: + Name: [16, 31] - [16, 33] + variable: Variable('l2', None) + ctx: Store + alias: [16, 35] - [16, 37] + value: + ImportMember: [16, 35] - [16, 37] + module: + ImportExpr: [16, 10] - [16, 17] + level: 2 + name: 'k1.k2' + top: False + name: 'l3' + asname: + Name: [16, 35] - [16, 37] + variable: Variable('l3', None) + ctx: Store + ] + Import: [18, 0] - [18, 20] + is_lazy: True + names: [ + alias: [18, 19] - [18, 20] + value: + ImportMember: [18, 19] - [18, 20] + module: + ImportExpr: [18, 10] - [18, 11] + level: 1 + name: None + top: False + name: 'm' + asname: + Name: [18, 19] - [18, 20] + variable: Variable('m', None) + ctx: Store + ] + Import: [20, 0] - [20, 22] + is_lazy: True + names: [ + alias: [20, 21] - [20, 22] + value: + ImportMember: [20, 21] - [20, 22] + module: + ImportExpr: [20, 10] - [20, 13] + level: 3 + name: None + top: False + name: 'n' + asname: + Name: [20, 21] - [20, 22] + variable: Variable('n', None) + ctx: Store + ] + ImportFrom: [22, 0] - [22, 20] + is_lazy: True + module: + ImportExpr: [22, 10] - [22, 11] + level: 0 + name: 'o' + top: False + Assign: [26, 0] - [26, 8] + targets: [ + Name: [26, 0] - [26, 4] + variable: Variable('lazy', None) + ctx: Store + ] + value: + Num: [26, 7] - [26, 8] + n: 1 + text: '1' + Assign: [28, 0] - [28, 11] + targets: [ + Subscript: [28, 0] - [28, 7] + value: + Name: [28, 0] - [28, 4] + variable: Variable('lazy', None) + ctx: Load + index: + Num: [28, 5] - [28, 6] + n: 2 + text: '2' + ctx: Store + ] + value: + Num: [28, 10] - [28, 11] + n: 3 + text: '3' + Assign: [30, 0] - [30, 12] + targets: [ + Attribute: [30, 0] - [30, 8] + value: + Name: [30, 0] - [30, 4] + variable: Variable('lazy', None) + ctx: Load + attr: 'foo' + ctx: Store + ] + value: + Num: [30, 11] - [30, 12] + n: 4 + text: '4' + Expr: [32, 0] - [32, 6] + value: + Call: [32, 0] - [32, 6] + func: + Name: [32, 0] - [32, 4] + variable: Variable('lazy', None) + ctx: Load + positional_args: [] + named_args: [] + AnnAssign: [34, 0] - [34, 14] + value: None + annotation: + Name: [34, 10] - [34, 14] + variable: Variable('case', None) + ctx: Load + target: + Subscript: [34, 0] - [34, 7] + value: + Name: [34, 0] - [34, 4] + variable: Variable('lazy', None) + ctx: Load + index: + Num: [34, 5] - [34, 6] + n: 5 + text: '5' + ctx: Store + ] diff --git a/python/extractor/tests/parser/lazy_imports_new.py b/python/extractor/tests/parser/lazy_imports_new.py new file mode 100644 index 000000000000..13d01eaa6c40 --- /dev/null +++ b/python/extractor/tests/parser/lazy_imports_new.py @@ -0,0 +1,34 @@ +# Basic lazy imports (PEP 810) +lazy import a + +lazy import b1, b2 + +lazy import c1.c2.c3 + +lazy import d1.d2 as d3 + +lazy from e import f + +lazy from g1.g2 import h1, h2 + +lazy from i1 import j1 as j2, j3 + +lazy from ..k1.k2 import l1 as l2, l3 + +lazy from . import m + +lazy from ... import n + +lazy from o import * + + +# `lazy` used as a regular identifier (soft keyword behavior) +lazy = 1 + +lazy[2] = 3 + +lazy.foo = 4 + +lazy() + +lazy[5] : case diff --git a/python/extractor/tests/parser/unpacking_in_comprehensions_new.expected b/python/extractor/tests/parser/unpacking_in_comprehensions_new.expected new file mode 100644 index 000000000000..a95d0bc25059 --- /dev/null +++ b/python/extractor/tests/parser/unpacking_in_comprehensions_new.expected @@ -0,0 +1,285 @@ +Module: [4, 0] - [20, 0] + body: [ + Expr: [4, 0] - [4, 15] + value: + ListComp: [4, 0] - [4, 15] + elt: None + generators: None + function: + Function: [4, 0] - [4, 15] + name: 'listcomp' + type_parameters: [] + args: [ + Name: [4, 0] - [4, 15] + variable: Variable('.0', None) + ctx: Param + ] + vararg: None + kwonlyargs: None + kwarg: None + body: [ + For: [4, 0] - [4, 15] + target: + Name: [4, 8] - [4, 9] + variable: Variable('x', None) + ctx: Store + iter: + Name: [4, 0] - [4, 15] + variable: Variable('.0', None) + ctx: Load + body: [ + Expr: [4, 1] - [4, 3] + value: + YieldFrom: [4, 1] - [4, 3] + value: + Name: [4, 2] - [4, 3] + variable: Variable('x', None) + ctx: Load + ] + orelse: None + ] + iterable: + Name: [4, 13] - [4, 14] + variable: Variable('y', None) + ctx: Load + Expr: [7, 0] - [7, 15] + value: + SetComp: [7, 0] - [7, 15] + elt: None + generators: None + function: + Function: [7, 0] - [7, 15] + name: 'setcomp' + type_parameters: [] + args: [ + Name: [7, 0] - [7, 15] + variable: Variable('.0', None) + ctx: Param + ] + vararg: None + kwonlyargs: None + kwarg: None + body: [ + For: [7, 0] - [7, 15] + target: + Name: [7, 8] - [7, 9] + variable: Variable('x', None) + ctx: Store + iter: + Name: [7, 0] - [7, 15] + variable: Variable('.0', None) + ctx: Load + body: [ + Expr: [7, 1] - [7, 3] + value: + YieldFrom: [7, 1] - [7, 3] + value: + Name: [7, 2] - [7, 3] + variable: Variable('x', None) + ctx: Load + ] + orelse: None + ] + iterable: + Name: [7, 13] - [7, 14] + variable: Variable('y', None) + ctx: Load + Expr: [10, 0] - [10, 20] + value: + DictComp: [10, 0] - [10, 20] + key: None + value: None + generators: None + function: + Function: [10, 0] - [10, 20] + name: 'dictcomp' + type_parameters: [] + args: [ + Name: [10, 0] - [10, 20] + variable: Variable('.0', None) + ctx: Param + ] + vararg: None + kwonlyargs: None + kwarg: None + body: [ + For: [10, 0] - [10, 20] + target: + Name: [10, 9] - [10, 10] + variable: Variable('d', None) + ctx: Store + iter: + Name: [10, 0] - [10, 20] + variable: Variable('.0', None) + ctx: Load + body: [ + Expr: [10, 1] - [10, 4] + value: + YieldFrom: [10, 1] - [10, 4] + value: + Call: [10, 3] - [10, 4] + func: + Attribute: [10, 3] - [10, 4] + value: + Name: [10, 3] - [10, 4] + variable: Variable('d', None) + ctx: Load + attr: 'items' + ctx: Load + positional_args: [] + named_args: [] + ] + orelse: None + ] + iterable: + Name: [10, 14] - [10, 19] + variable: Variable('dicts', None) + ctx: Load + Expr: [13, 0] - [13, 15] + value: + GeneratorExp: [13, 1] - [13, 14] + elt: None + generators: None + function: + Function: [13, 1] - [13, 14] + name: 'genexpr' + type_parameters: [] + args: [ + Name: [13, 1] - [13, 14] + variable: Variable('.0', None) + ctx: Param + ] + vararg: None + kwonlyargs: None + kwarg: None + body: [ + For: [13, 1] - [13, 14] + target: + Name: [13, 8] - [13, 9] + variable: Variable('x', None) + ctx: Store + iter: + Name: [13, 1] - [13, 14] + variable: Variable('.0', None) + ctx: Load + body: [ + Expr: [13, 1] - [13, 3] + value: + YieldFrom: [13, 1] - [13, 3] + value: + Name: [13, 2] - [13, 3] + variable: Variable('x', None) + ctx: Load + ] + orelse: None + ] + iterable: + Name: [13, 13] - [13, 14] + variable: Variable('y', None) + ctx: Load + parenthesised: True + Expr: [16, 0] - [16, 20] + value: + ListComp: [16, 0] - [16, 20] + elt: None + generators: None + function: + Function: [16, 0] - [16, 20] + name: 'listcomp' + type_parameters: [] + args: [ + Name: [16, 0] - [16, 20] + variable: Variable('.0', None) + ctx: Param + ] + vararg: None + kwonlyargs: None + kwarg: None + body: [ + For: [16, 0] - [16, 20] + target: + Name: [16, 8] - [16, 9] + variable: Variable('x', None) + ctx: Store + iter: + Name: [16, 0] - [16, 20] + variable: Variable('.0', None) + ctx: Load + body: [ + If: [16, 18] - [16, 19] + test: + Name: [16, 18] - [16, 19] + variable: Variable('x', None) + ctx: Load + body: [ + Expr: [16, 1] - [16, 3] + value: + YieldFrom: [16, 1] - [16, 3] + value: + Name: [16, 2] - [16, 3] + variable: Variable('x', None) + ctx: Load + ] + orelse: None + ] + orelse: None + ] + iterable: + Name: [16, 13] - [16, 14] + variable: Variable('y', None) + ctx: Load + Expr: [19, 0] - [19, 26] + value: + ListComp: [19, 0] - [19, 26] + elt: None + generators: None + function: + Function: [19, 0] - [19, 26] + name: 'listcomp' + type_parameters: [] + args: [ + Name: [19, 0] - [19, 26] + variable: Variable('.0', None) + ctx: Param + ] + vararg: None + kwonlyargs: None + kwarg: None + body: [ + For: [19, 0] - [19, 26] + target: + Name: [19, 8] - [19, 9] + variable: Variable('y', None) + ctx: Store + iter: + Name: [19, 0] - [19, 26] + variable: Variable('.0', None) + ctx: Load + body: [ + For: [19, 0] - [19, 26] + target: + Name: [19, 19] - [19, 20] + variable: Variable('x', None) + ctx: Store + iter: + Name: [19, 24] - [19, 25] + variable: Variable('y', None) + ctx: Load + body: [ + Expr: [19, 1] - [19, 3] + value: + YieldFrom: [19, 1] - [19, 3] + value: + Name: [19, 2] - [19, 3] + variable: Variable('x', None) + ctx: Load + ] + orelse: None + ] + orelse: None + ] + iterable: + Name: [19, 13] - [19, 14] + variable: Variable('z', None) + ctx: Load + ] diff --git a/python/extractor/tests/parser/unpacking_in_comprehensions_new.py b/python/extractor/tests/parser/unpacking_in_comprehensions_new.py new file mode 100644 index 000000000000..024e0fe1ceae --- /dev/null +++ b/python/extractor/tests/parser/unpacking_in_comprehensions_new.py @@ -0,0 +1,19 @@ +# PEP 798: Unpacking in comprehensions + +# Star unpacking in list comprehension +[*x for x in y] + +# Star unpacking in set comprehension +{*x for x in y} + +# Double-star unpacking in dict comprehension +{**d for d in dicts} + +# Star unpacking in generator expression +(*x for x in y) + +# With conditions +[*x for x in y if x] + +# Multiple for clauses +[*x for y in z for x in y] diff --git a/python/extractor/tsg-python/python.tsg b/python/extractor/tsg-python/python.tsg index dd11814753d8..c832f7e63219 100644 --- a/python/extractor/tsg-python/python.tsg +++ b/python/extractor/tsg-python/python.tsg @@ -403,7 +403,7 @@ ;;; GeneratorExp -(generator_expression . "(" . (comment)* . (expression) @start [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @generatorexp +(generator_expression . "(" . (comment)* . [(expression) (list_splat)] @start [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @generatorexp { attr (@generatorexp.node) _location_start = (location-start @start) attr (@generatorexp.node) _location_end = (location-end @end) @@ -415,13 +415,13 @@ attr (@if.node) _location_end = (location-end @expr) } -(generator_expression . "(" . (comment)* . (expression) @start (for_in_clause) @child [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @_genexpr +(generator_expression . "(" . (comment)* . [(expression) (list_splat)] @start (for_in_clause) @child [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @_genexpr { attr (@child.node) _location_start = (location-start @start) attr (@child.node) _location_end = (location-end @end) } -(generator_expression . "(" . (comment)* . (expression) @start (for_in_clause) @end . (comment)* . ")" .) @_genexpr +(generator_expression . "(" . (comment)* . [(expression) (list_splat)] @start (for_in_clause) @end . (comment)* . ")" .) @_genexpr { attr (@end.node) _location_start = (location-start @start) attr (@end.node) _location_end = (location-end @end) @@ -795,12 +795,7 @@ ;;;;;; DictComp (`{a: b for c in d if e}`) ; See GeneratorExp for details. -(dictionary_comprehension - body: (pair - key: (_) @_key - value: (_) @_value - ) -) @genexpr +(dictionary_comprehension) @genexpr { ; Synthesize the `genexpr` function let @genexpr.fun = (ast-node @genexpr "Function") @@ -862,7 +857,7 @@ ; information for the entire generator expression (yes, it is a wide parameter!) and so we must recreate the logic for ; setting this location information correctly. -(generator_expression . "(" . (comment)* . (expression) @start [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @genexpr +(generator_expression . "(" . (comment)* . [(expression) (list_splat)] @start [(for_in_clause) (if_clause)] @end . (comment)* . ")" .) @genexpr { ; Synthesize the `genexpr` function let @genexpr.fun = (ast-node @genexpr "Function") @@ -1034,12 +1029,25 @@ ; For everything except dictionary comprehensions, the innermost expression is just the `body` of the ; comprehension. [ - (generator_expression body: (_) @body) @genexpr - (list_comprehension body: (_) @body) @genexpr - (set_comprehension body: (_) @body) @genexpr + (generator_expression body: (expression) @body) @genexpr + (list_comprehension body: (expression) @body) @genexpr + (set_comprehension body: (expression) @body) @genexpr ] { let @genexpr.result = @body.node + let @genexpr.yield_kind = "Yield" +} + +; For starred comprehensions (PEP 798), the result is the inner expression (not the Starred +; wrapper), and we use `yield from` instead of `yield` to represent the unpacking semantics. +[ + (generator_expression body: (list_splat (expression) @inner) @_body) @genexpr + (list_comprehension body: (list_splat (expression) @inner) @_body) @genexpr + (set_comprehension body: (list_splat (expression) @inner) @_body) @genexpr +] +{ + let @genexpr.result = @inner.node + let @genexpr.yield_kind = "YieldFrom" } ; For dict comprehensions, we build an explicit tuple using the key and value pair. @@ -1052,13 +1060,31 @@ { let tuple = (ast-node @body "Tuple") edge tuple -> @key.node - attr (tuple -> @key.node) elts = 1 + attr (tuple -> @key.node) elts = 0 edge tuple -> @value.node - attr (tuple -> @value.node) elts = 0 - ; TODO verify that it is correct to use a `(value, key)` tuple, and not a `(key, value)` tuple above. - ; That is what the current parser does... + attr (tuple -> @value.node) elts = 1 attr (tuple) ctx = "load" let @genexpr.result = tuple + let @genexpr.yield_kind = "Yield" +} + +; For dict comprehensions with unpacking (PEP 798), `{**d for d in dicts}` desugars to +; `yield from d.items()` to produce (key, value) tuples consistent with the regular dict comp model. +(dictionary_comprehension + body: (dictionary_splat (expression) @inner) @_body +) @genexpr +{ + ; Synthesize `d.items()`: Attribute(value=d, attr='items') then Call(func=attr) + let attr = (ast-node @inner "Attribute") + attr (attr) value = @inner.node + attr (attr) attr = "items" + attr (attr) ctx = "load" + + let call = (ast-node @inner "Call") + attr (call) func = attr + + let @genexpr.result = call + let @genexpr.yield_kind = "YieldFrom" } ; For the final clause, we need to hook it up with the rest of the expression. @@ -1094,7 +1120,7 @@ let last = (get-last-element @last_candidates) let expr = (ast-node @body "Expr") - let yield = (ast-node @body "Yield") + let yield = (ast-node @body @genexpr.yield_kind) let @genexpr.expr = expr let @genexpr.yield = yield @@ -1777,6 +1803,13 @@ attr (@importfrom.importexpr) level = level } +; Set is_lazy for lazy import statements (PEP 810) +[ + (import_statement is_lazy: _) + (import_from_statement is_lazy: _) +] @lazy_import +{ attr (@lazy_import.node) is_lazy = #true } + ;;;;;; End of Import (`from ... import ...`) ;;;;;; Raise (`raise ...`) diff --git a/python/extractor/tsg-python/tsp/grammar.js b/python/extractor/tsg-python/tsp/grammar.js index c53a67da1260..8f4dd8d7cf64 100644 --- a/python/extractor/tsg-python/tsp/grammar.js +++ b/python/extractor/tsg-python/tsp/grammar.js @@ -109,6 +109,7 @@ module.exports = grammar({ ), import_statement: $ => seq( + optional(field('is_lazy', 'lazy')), 'import', $._import_list ), @@ -131,6 +132,7 @@ module.exports = grammar({ ), import_from_statement: $ => seq( + optional(field('is_lazy', 'lazy')), 'from', field('module_name', choice( $.relative_import, @@ -1029,28 +1031,28 @@ module.exports = grammar({ list_comprehension: $ => seq( '[', - field('body', $.expression), + field('body', choice($.expression, $.list_splat)), $._comprehension_clauses, ']' ), dictionary_comprehension: $ => seq( '{', - field('body', $.pair), + field('body', choice($.pair, $.dictionary_splat)), $._comprehension_clauses, '}' ), set_comprehension: $ => seq( '{', - field('body', $.expression), + field('body', choice($.expression, $.list_splat)), $._comprehension_clauses, '}' ), generator_expression: $ => seq( '(', - field('body', $.expression), + field('body', choice($.expression, $.list_splat)), $._comprehension_clauses, ')' ), @@ -1228,6 +1230,7 @@ module.exports = grammar({ 'await', 'match', 'type', + 'lazy', ), $.identifier )), diff --git a/python/extractor/tsg-python/tsp/src/grammar.json b/python/extractor/tsg-python/tsp/src/grammar.json index fbe1f17b9491..8fb9763034ef 100644 --- a/python/extractor/tsg-python/tsp/src/grammar.json +++ b/python/extractor/tsg-python/tsp/src/grammar.json @@ -144,6 +144,22 @@ "import_statement": { "type": "SEQ", "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "is_lazy", + "content": { + "type": "STRING", + "value": "lazy" + } + }, + { + "type": "BLANK" + } + ] + }, { "type": "STRING", "value": "import" @@ -232,6 +248,22 @@ "import_from_statement": { "type": "SEQ", "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "is_lazy", + "content": { + "type": "STRING", + "value": "lazy" + } + }, + { + "type": "BLANK" + } + ] + }, { "type": "STRING", "value": "from" @@ -5614,8 +5646,17 @@ "type": "FIELD", "name": "body", "content": { - "type": "SYMBOL", - "name": "expression" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "list_splat" + } + ] } }, { @@ -5639,8 +5680,17 @@ "type": "FIELD", "name": "body", "content": { - "type": "SYMBOL", - "name": "pair" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "pair" + }, + { + "type": "SYMBOL", + "name": "dictionary_splat" + } + ] } }, { @@ -5664,8 +5714,17 @@ "type": "FIELD", "name": "body", "content": { - "type": "SYMBOL", - "name": "expression" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "list_splat" + } + ] } }, { @@ -5689,8 +5748,17 @@ "type": "FIELD", "name": "body", "content": { - "type": "SYMBOL", - "name": "expression" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "list_splat" + } + ] } }, { @@ -6721,6 +6789,10 @@ { "type": "STRING", "value": "type" + }, + { + "type": "STRING", + "value": "lazy" } ] }, diff --git a/python/extractor/tsg-python/tsp/src/node-types.json b/python/extractor/tsg-python/tsp/src/node-types.json index 609952bd5e53..6579591c6522 100644 --- a/python/extractor/tsg-python/tsp/src/node-types.json +++ b/python/extractor/tsg-python/tsp/src/node-types.json @@ -1162,6 +1162,10 @@ "multiple": false, "required": true, "types": [ + { + "type": "dictionary_splat", + "named": true + }, { "type": "pair", "named": true @@ -1702,6 +1706,10 @@ { "type": "expression", "named": true + }, + { + "type": "list_splat", + "named": true } ] } @@ -1811,6 +1819,16 @@ "type": "import_from_statement", "named": true, "fields": { + "is_lazy": { + "multiple": false, + "required": false, + "types": [ + { + "type": "lazy", + "named": false + } + ] + }, "module_name": { "multiple": false, "required": true, @@ -1860,6 +1878,16 @@ "type": "import_statement", "named": true, "fields": { + "is_lazy": { + "multiple": false, + "required": false, + "types": [ + { + "type": "lazy", + "named": false + } + ] + }, "name": { "multiple": true, "required": true, @@ -2059,6 +2087,10 @@ { "type": "expression", "named": true + }, + { + "type": "list_splat", + "named": true } ] } @@ -3159,6 +3191,10 @@ { "type": "expression", "named": true + }, + { + "type": "list_splat", + "named": true } ] } @@ -4154,6 +4190,10 @@ "type": "lambda", "named": false }, + { + "type": "lazy", + "named": false + }, { "type": "match", "named": false diff --git a/python/extractor/tsg-python/tsp/src/parser.c b/python/extractor/tsg-python/tsp/src/parser.c index 74a0d1440fbd..16db1b93d977 100644 --- a/python/extractor/tsg-python/tsp/src/parser.c +++ b/python/extractor/tsg-python/tsp/src/parser.c @@ -7,317 +7,319 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 1723 -#define LARGE_STATE_COUNT 156 -#define SYMBOL_COUNT 291 +#define STATE_COUNT 1755 +#define LARGE_STATE_COUNT 157 +#define SYMBOL_COUNT 292 #define ALIAS_COUNT 3 -#define TOKEN_COUNT 109 +#define TOKEN_COUNT 110 #define EXTERNAL_TOKEN_COUNT 7 -#define FIELD_COUNT 54 +#define FIELD_COUNT 55 #define MAX_ALIAS_SEQUENCE_LENGTH 10 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 166 +#define PRODUCTION_ID_COUNT 170 #define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { sym_identifier = 1, - anon_sym_import = 2, - anon_sym_DOT = 3, - anon_sym_from = 4, - anon_sym___future__ = 5, - anon_sym_LPAREN = 6, - anon_sym_RPAREN = 7, - anon_sym_COMMA = 8, - anon_sym_as = 9, - anon_sym_STAR = 10, - anon_sym_print = 11, - anon_sym_GT_GT = 12, - anon_sym_assert = 13, - anon_sym_COLON_EQ = 14, - anon_sym_return = 15, - anon_sym_del = 16, - anon_sym_raise = 17, - anon_sym_pass = 18, - anon_sym_break = 19, - anon_sym_continue = 20, - anon_sym_if = 21, - anon_sym_COLON = 22, - anon_sym_elif = 23, - anon_sym_else = 24, - anon_sym_async = 25, - anon_sym_for = 26, - anon_sym_in = 27, - anon_sym_while = 28, - anon_sym_try = 29, - anon_sym_except = 30, - anon_sym_finally = 31, - anon_sym_with = 32, - anon_sym_match = 33, - anon_sym_case = 34, - anon_sym_PIPE = 35, - anon_sym_DASH = 36, - anon_sym_PLUS = 37, - sym_match_wildcard_pattern = 38, - anon_sym_LBRACK = 39, - anon_sym_RBRACK = 40, - anon_sym_LBRACE = 41, - anon_sym_RBRACE = 42, - anon_sym_STAR_STAR = 43, - anon_sym_EQ = 44, - anon_sym_def = 45, - anon_sym_DASH_GT = 46, - anon_sym_global = 47, - anon_sym_nonlocal = 48, - anon_sym_exec = 49, - anon_sym_type = 50, - anon_sym_class = 51, - anon_sym_AT = 52, - anon_sym_not = 53, - anon_sym_and = 54, - anon_sym_or = 55, - anon_sym_SLASH = 56, - anon_sym_PERCENT = 57, - anon_sym_SLASH_SLASH = 58, - anon_sym_AMP = 59, - anon_sym_CARET = 60, - anon_sym_LT_LT = 61, - anon_sym_TILDE = 62, - anon_sym_LT = 63, - anon_sym_LT_EQ = 64, - anon_sym_EQ_EQ = 65, - anon_sym_BANG_EQ = 66, - anon_sym_GT_EQ = 67, - anon_sym_GT = 68, - anon_sym_LT_GT = 69, - anon_sym_is = 70, - anon_sym_lambda = 71, - anon_sym_PLUS_EQ = 72, - anon_sym_DASH_EQ = 73, - anon_sym_STAR_EQ = 74, - anon_sym_SLASH_EQ = 75, - anon_sym_AT_EQ = 76, - anon_sym_SLASH_SLASH_EQ = 77, - anon_sym_PERCENT_EQ = 78, - anon_sym_STAR_STAR_EQ = 79, - anon_sym_GT_GT_EQ = 80, - anon_sym_LT_LT_EQ = 81, - anon_sym_AMP_EQ = 82, - anon_sym_CARET_EQ = 83, - anon_sym_PIPE_EQ = 84, - anon_sym_yield = 85, - sym_ellipsis = 86, - anon_sym_LBRACE2 = 87, - sym__escape_interpolation = 88, - sym_escape_sequence = 89, - anon_sym_BSLASH = 90, - anon_sym_COLON2 = 91, - aux_sym_format_specifier_token1 = 92, - sym_type_conversion = 93, - sym_integer = 94, - sym_float = 95, - anon_sym_await = 96, - sym_true = 97, - sym_false = 98, - sym_none = 99, - sym_comment = 100, - anon_sym_SEMI = 101, - sym__newline = 102, - sym__indent = 103, - sym__dedent = 104, - sym__string_start = 105, - sym__string_content = 106, - sym__string_end = 107, - sym__template_string_start = 108, - sym_module = 109, - sym__statement = 110, - sym__simple_statements = 111, - sym_import_statement = 112, - sym_import_prefix = 113, - sym_relative_import = 114, - sym_future_import_statement = 115, - sym_import_from_statement = 116, - sym__import_list = 117, - sym_aliased_import = 118, - sym_wildcard_import = 119, - sym_print_statement = 120, - sym_chevron = 121, - sym_assert_statement = 122, - sym_expression_statement = 123, - sym_named_expression = 124, - sym_return_statement = 125, - sym_delete_statement = 126, - sym_raise_statement = 127, - sym_pass_statement = 128, - sym_break_statement = 129, - sym_continue_statement = 130, - sym_if_statement = 131, - sym_elif_clause = 132, - sym_else_clause = 133, - sym_for_statement = 134, - sym_while_statement = 135, - sym_try_statement = 136, - sym_exception_list = 137, - sym_except_clause = 138, - sym_except_group_clause = 139, - sym_finally_clause = 140, - sym_with_statement = 141, - sym_with_clause = 142, - sym_with_item = 143, - sym_match_statement = 144, - sym_cases = 145, - sym_case_block = 146, - sym__match_patterns = 147, - sym_open_sequence_match_pattern = 148, - sym__match_pattern = 149, - sym_match_as_pattern = 150, - sym__match_or_pattern = 151, - sym_match_or_pattern = 152, - sym__closed_pattern = 153, - sym_match_literal_pattern = 154, - sym_match_capture_pattern = 155, - sym_match_value_pattern = 156, - sym_match_group_pattern = 157, - sym_match_sequence_pattern = 158, - sym__match_maybe_star_pattern = 159, - sym_match_star_pattern = 160, - sym_match_mapping_pattern = 161, - sym_match_double_star_pattern = 162, - sym_match_key_value_pattern = 163, - sym_match_class_pattern = 164, - sym_pattern_class_name = 165, - sym_match_positional_pattern = 166, - sym_match_keyword_pattern = 167, - sym_guard = 168, - sym_function_definition = 169, - sym_parameters = 170, - sym_lambda_parameters = 171, - sym_list_splat = 172, - sym_dictionary_splat = 173, - sym_global_statement = 174, - sym_nonlocal_statement = 175, - sym_exec_statement = 176, - sym_type_alias_statement = 177, - sym_class_definition = 178, - sym_type_parameters = 179, - sym__type_bound = 180, - sym_typevar_parameter = 181, - sym_typevartuple_parameter = 182, - sym_paramspec_parameter = 183, - sym__type_parameter = 184, - sym__type_param_default = 185, - sym_parenthesized_list_splat = 186, - sym_argument_list = 187, - sym_decorated_definition = 188, - sym_decorator = 189, - sym_block = 190, - sym_expression_list = 191, - sym_dotted_name = 192, - sym__parameters = 193, - sym__patterns = 194, - sym_parameter = 195, - sym_pattern = 196, - sym_tuple_pattern = 197, - sym_list_pattern = 198, - sym_default_parameter = 199, - sym_typed_default_parameter = 200, - sym_list_splat_pattern = 201, - sym_dictionary_splat_pattern = 202, - sym__expression_within_for_in_clause = 203, - sym_expression = 204, - sym_primary_expression = 205, - sym_not_operator = 206, - sym_boolean_operator = 207, - sym_binary_operator = 208, - sym_unary_operator = 209, - sym_comparison_operator = 210, - sym_lambda = 211, - sym_lambda_within_for_in_clause = 212, - sym_assignment = 213, - sym_augmented_assignment = 214, - sym_pattern_list = 215, - sym__right_hand_side = 216, - sym_yield = 217, - sym_attribute = 218, - sym__index_expression = 219, - sym_index_expression_list = 220, - sym_subscript = 221, - sym_slice = 222, - sym_call = 223, - sym_typed_parameter = 224, - sym_type = 225, - sym_keyword_argument = 226, - sym_list = 227, - sym_set = 228, - sym_tuple = 229, - sym_dictionary = 230, - sym_pair = 231, - sym_list_comprehension = 232, - sym_dictionary_comprehension = 233, - sym_set_comprehension = 234, - sym_generator_expression = 235, - sym__comprehension_clauses = 236, - sym_parenthesized_expression = 237, - sym__collection_elements = 238, - sym_for_in_clause = 239, - sym_if_clause = 240, - sym_conditional_expression = 241, - sym_concatenated_string = 242, - sym_string = 243, - sym_concatenated_template_string = 244, - sym_template_string = 245, - sym_string_content = 246, - sym_interpolation = 247, - sym__f_expression = 248, - sym__not_escape_sequence = 249, - sym_format_specifier = 250, - sym_await = 251, - sym_positional_separator = 252, - sym_keyword_separator = 253, - sym__semicolon = 254, - aux_sym_module_repeat1 = 255, - aux_sym__simple_statements_repeat1 = 256, - aux_sym_import_prefix_repeat1 = 257, - aux_sym__import_list_repeat1 = 258, - aux_sym_print_statement_repeat1 = 259, - aux_sym_assert_statement_repeat1 = 260, - aux_sym_if_statement_repeat1 = 261, - aux_sym_try_statement_repeat1 = 262, - aux_sym_try_statement_repeat2 = 263, - aux_sym_exception_list_repeat1 = 264, - aux_sym_with_clause_repeat1 = 265, - aux_sym_cases_repeat1 = 266, - aux_sym_open_sequence_match_pattern_repeat1 = 267, - aux_sym_match_or_pattern_repeat1 = 268, - aux_sym_match_value_pattern_repeat1 = 269, - aux_sym_match_mapping_pattern_repeat1 = 270, - aux_sym_match_class_pattern_repeat1 = 271, - aux_sym_match_class_pattern_repeat2 = 272, - aux_sym_global_statement_repeat1 = 273, - aux_sym_type_parameters_repeat1 = 274, - aux_sym_argument_list_repeat1 = 275, - aux_sym_decorated_definition_repeat1 = 276, - aux_sym_expression_list_repeat1 = 277, - aux_sym__parameters_repeat1 = 278, - aux_sym__patterns_repeat1 = 279, - aux_sym_comparison_operator_repeat1 = 280, - aux_sym_index_expression_list_repeat1 = 281, - aux_sym_dictionary_repeat1 = 282, - aux_sym__comprehension_clauses_repeat1 = 283, - aux_sym__collection_elements_repeat1 = 284, - aux_sym_for_in_clause_repeat1 = 285, - aux_sym_concatenated_string_repeat1 = 286, - aux_sym_string_repeat1 = 287, - aux_sym_concatenated_template_string_repeat1 = 288, - aux_sym_string_content_repeat1 = 289, - aux_sym_format_specifier_repeat1 = 290, - alias_sym_format_expression = 291, - anon_alias_sym_isnot = 292, - anon_alias_sym_notin = 293, + anon_sym_lazy = 2, + anon_sym_import = 3, + anon_sym_DOT = 4, + anon_sym_from = 5, + anon_sym___future__ = 6, + anon_sym_LPAREN = 7, + anon_sym_RPAREN = 8, + anon_sym_COMMA = 9, + anon_sym_as = 10, + anon_sym_STAR = 11, + anon_sym_print = 12, + anon_sym_GT_GT = 13, + anon_sym_assert = 14, + anon_sym_COLON_EQ = 15, + anon_sym_return = 16, + anon_sym_del = 17, + anon_sym_raise = 18, + anon_sym_pass = 19, + anon_sym_break = 20, + anon_sym_continue = 21, + anon_sym_if = 22, + anon_sym_COLON = 23, + anon_sym_elif = 24, + anon_sym_else = 25, + anon_sym_async = 26, + anon_sym_for = 27, + anon_sym_in = 28, + anon_sym_while = 29, + anon_sym_try = 30, + anon_sym_except = 31, + anon_sym_finally = 32, + anon_sym_with = 33, + anon_sym_match = 34, + anon_sym_case = 35, + anon_sym_PIPE = 36, + anon_sym_DASH = 37, + anon_sym_PLUS = 38, + sym_match_wildcard_pattern = 39, + anon_sym_LBRACK = 40, + anon_sym_RBRACK = 41, + anon_sym_LBRACE = 42, + anon_sym_RBRACE = 43, + anon_sym_STAR_STAR = 44, + anon_sym_EQ = 45, + anon_sym_def = 46, + anon_sym_DASH_GT = 47, + anon_sym_global = 48, + anon_sym_nonlocal = 49, + anon_sym_exec = 50, + anon_sym_type = 51, + anon_sym_class = 52, + anon_sym_AT = 53, + anon_sym_not = 54, + anon_sym_and = 55, + anon_sym_or = 56, + anon_sym_SLASH = 57, + anon_sym_PERCENT = 58, + anon_sym_SLASH_SLASH = 59, + anon_sym_AMP = 60, + anon_sym_CARET = 61, + anon_sym_LT_LT = 62, + anon_sym_TILDE = 63, + anon_sym_LT = 64, + anon_sym_LT_EQ = 65, + anon_sym_EQ_EQ = 66, + anon_sym_BANG_EQ = 67, + anon_sym_GT_EQ = 68, + anon_sym_GT = 69, + anon_sym_LT_GT = 70, + anon_sym_is = 71, + anon_sym_lambda = 72, + anon_sym_PLUS_EQ = 73, + anon_sym_DASH_EQ = 74, + anon_sym_STAR_EQ = 75, + anon_sym_SLASH_EQ = 76, + anon_sym_AT_EQ = 77, + anon_sym_SLASH_SLASH_EQ = 78, + anon_sym_PERCENT_EQ = 79, + anon_sym_STAR_STAR_EQ = 80, + anon_sym_GT_GT_EQ = 81, + anon_sym_LT_LT_EQ = 82, + anon_sym_AMP_EQ = 83, + anon_sym_CARET_EQ = 84, + anon_sym_PIPE_EQ = 85, + anon_sym_yield = 86, + sym_ellipsis = 87, + anon_sym_LBRACE2 = 88, + sym__escape_interpolation = 89, + sym_escape_sequence = 90, + anon_sym_BSLASH = 91, + anon_sym_COLON2 = 92, + aux_sym_format_specifier_token1 = 93, + sym_type_conversion = 94, + sym_integer = 95, + sym_float = 96, + anon_sym_await = 97, + sym_true = 98, + sym_false = 99, + sym_none = 100, + sym_comment = 101, + anon_sym_SEMI = 102, + sym__newline = 103, + sym__indent = 104, + sym__dedent = 105, + sym__string_start = 106, + sym__string_content = 107, + sym__string_end = 108, + sym__template_string_start = 109, + sym_module = 110, + sym__statement = 111, + sym__simple_statements = 112, + sym_import_statement = 113, + sym_import_prefix = 114, + sym_relative_import = 115, + sym_future_import_statement = 116, + sym_import_from_statement = 117, + sym__import_list = 118, + sym_aliased_import = 119, + sym_wildcard_import = 120, + sym_print_statement = 121, + sym_chevron = 122, + sym_assert_statement = 123, + sym_expression_statement = 124, + sym_named_expression = 125, + sym_return_statement = 126, + sym_delete_statement = 127, + sym_raise_statement = 128, + sym_pass_statement = 129, + sym_break_statement = 130, + sym_continue_statement = 131, + sym_if_statement = 132, + sym_elif_clause = 133, + sym_else_clause = 134, + sym_for_statement = 135, + sym_while_statement = 136, + sym_try_statement = 137, + sym_exception_list = 138, + sym_except_clause = 139, + sym_except_group_clause = 140, + sym_finally_clause = 141, + sym_with_statement = 142, + sym_with_clause = 143, + sym_with_item = 144, + sym_match_statement = 145, + sym_cases = 146, + sym_case_block = 147, + sym__match_patterns = 148, + sym_open_sequence_match_pattern = 149, + sym__match_pattern = 150, + sym_match_as_pattern = 151, + sym__match_or_pattern = 152, + sym_match_or_pattern = 153, + sym__closed_pattern = 154, + sym_match_literal_pattern = 155, + sym_match_capture_pattern = 156, + sym_match_value_pattern = 157, + sym_match_group_pattern = 158, + sym_match_sequence_pattern = 159, + sym__match_maybe_star_pattern = 160, + sym_match_star_pattern = 161, + sym_match_mapping_pattern = 162, + sym_match_double_star_pattern = 163, + sym_match_key_value_pattern = 164, + sym_match_class_pattern = 165, + sym_pattern_class_name = 166, + sym_match_positional_pattern = 167, + sym_match_keyword_pattern = 168, + sym_guard = 169, + sym_function_definition = 170, + sym_parameters = 171, + sym_lambda_parameters = 172, + sym_list_splat = 173, + sym_dictionary_splat = 174, + sym_global_statement = 175, + sym_nonlocal_statement = 176, + sym_exec_statement = 177, + sym_type_alias_statement = 178, + sym_class_definition = 179, + sym_type_parameters = 180, + sym__type_bound = 181, + sym_typevar_parameter = 182, + sym_typevartuple_parameter = 183, + sym_paramspec_parameter = 184, + sym__type_parameter = 185, + sym__type_param_default = 186, + sym_parenthesized_list_splat = 187, + sym_argument_list = 188, + sym_decorated_definition = 189, + sym_decorator = 190, + sym_block = 191, + sym_expression_list = 192, + sym_dotted_name = 193, + sym__parameters = 194, + sym__patterns = 195, + sym_parameter = 196, + sym_pattern = 197, + sym_tuple_pattern = 198, + sym_list_pattern = 199, + sym_default_parameter = 200, + sym_typed_default_parameter = 201, + sym_list_splat_pattern = 202, + sym_dictionary_splat_pattern = 203, + sym__expression_within_for_in_clause = 204, + sym_expression = 205, + sym_primary_expression = 206, + sym_not_operator = 207, + sym_boolean_operator = 208, + sym_binary_operator = 209, + sym_unary_operator = 210, + sym_comparison_operator = 211, + sym_lambda = 212, + sym_lambda_within_for_in_clause = 213, + sym_assignment = 214, + sym_augmented_assignment = 215, + sym_pattern_list = 216, + sym__right_hand_side = 217, + sym_yield = 218, + sym_attribute = 219, + sym__index_expression = 220, + sym_index_expression_list = 221, + sym_subscript = 222, + sym_slice = 223, + sym_call = 224, + sym_typed_parameter = 225, + sym_type = 226, + sym_keyword_argument = 227, + sym_list = 228, + sym_set = 229, + sym_tuple = 230, + sym_dictionary = 231, + sym_pair = 232, + sym_list_comprehension = 233, + sym_dictionary_comprehension = 234, + sym_set_comprehension = 235, + sym_generator_expression = 236, + sym__comprehension_clauses = 237, + sym_parenthesized_expression = 238, + sym__collection_elements = 239, + sym_for_in_clause = 240, + sym_if_clause = 241, + sym_conditional_expression = 242, + sym_concatenated_string = 243, + sym_string = 244, + sym_concatenated_template_string = 245, + sym_template_string = 246, + sym_string_content = 247, + sym_interpolation = 248, + sym__f_expression = 249, + sym__not_escape_sequence = 250, + sym_format_specifier = 251, + sym_await = 252, + sym_positional_separator = 253, + sym_keyword_separator = 254, + sym__semicolon = 255, + aux_sym_module_repeat1 = 256, + aux_sym__simple_statements_repeat1 = 257, + aux_sym_import_prefix_repeat1 = 258, + aux_sym__import_list_repeat1 = 259, + aux_sym_print_statement_repeat1 = 260, + aux_sym_assert_statement_repeat1 = 261, + aux_sym_if_statement_repeat1 = 262, + aux_sym_try_statement_repeat1 = 263, + aux_sym_try_statement_repeat2 = 264, + aux_sym_exception_list_repeat1 = 265, + aux_sym_with_clause_repeat1 = 266, + aux_sym_cases_repeat1 = 267, + aux_sym_open_sequence_match_pattern_repeat1 = 268, + aux_sym_match_or_pattern_repeat1 = 269, + aux_sym_match_value_pattern_repeat1 = 270, + aux_sym_match_mapping_pattern_repeat1 = 271, + aux_sym_match_class_pattern_repeat1 = 272, + aux_sym_match_class_pattern_repeat2 = 273, + aux_sym_global_statement_repeat1 = 274, + aux_sym_type_parameters_repeat1 = 275, + aux_sym_argument_list_repeat1 = 276, + aux_sym_decorated_definition_repeat1 = 277, + aux_sym_expression_list_repeat1 = 278, + aux_sym__parameters_repeat1 = 279, + aux_sym__patterns_repeat1 = 280, + aux_sym_comparison_operator_repeat1 = 281, + aux_sym_index_expression_list_repeat1 = 282, + aux_sym_dictionary_repeat1 = 283, + aux_sym__comprehension_clauses_repeat1 = 284, + aux_sym__collection_elements_repeat1 = 285, + aux_sym_for_in_clause_repeat1 = 286, + aux_sym_concatenated_string_repeat1 = 287, + aux_sym_string_repeat1 = 288, + aux_sym_concatenated_template_string_repeat1 = 289, + aux_sym_string_content_repeat1 = 290, + aux_sym_format_specifier_repeat1 = 291, + alias_sym_format_expression = 292, + anon_alias_sym_isnot = 293, + anon_alias_sym_notin = 294, }; static const char * const ts_symbol_names[] = { [ts_builtin_sym_end] = "end", [sym_identifier] = "identifier", + [anon_sym_lazy] = "lazy", [anon_sym_import] = "import", [anon_sym_DOT] = ".", [anon_sym_from] = "from", @@ -615,6 +617,7 @@ static const char * const ts_symbol_names[] = { static const TSSymbol ts_symbol_map[] = { [ts_builtin_sym_end] = ts_builtin_sym_end, [sym_identifier] = sym_identifier, + [anon_sym_lazy] = anon_sym_lazy, [anon_sym_import] = anon_sym_import, [anon_sym_DOT] = anon_sym_DOT, [anon_sym_from] = anon_sym_from, @@ -918,6 +921,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [anon_sym_lazy] = { + .visible = true, + .named = false, + }, [anon_sym_import] = { .visible = true, .named = false, @@ -2116,37 +2123,38 @@ enum ts_field_identifiers { field_imaginary = 21, field_inner = 22, field_interpolation = 23, - field_key = 24, - field_kwarg = 25, - field_left = 26, - field_module_name = 27, - field_name = 28, - field_object = 29, - field_operator = 30, - field_operators = 31, - field_parameters = 32, - field_pattern = 33, - field_prefix = 34, - field_prefix_operator = 35, - field_real = 36, - field_return_type = 37, - field_right = 38, - field_start = 39, - field_step = 40, - field_stop = 41, - field_string_content = 42, - field_subject = 43, - field_subscript = 44, - field_suffix = 45, - field_superclasses = 46, - field_target = 47, - field_test = 48, - field_trailing_comma = 49, - field_type = 50, - field_type_parameter = 51, - field_type_parameters = 52, - field_value = 53, - field_vararg = 54, + field_is_lazy = 24, + field_key = 25, + field_kwarg = 26, + field_left = 27, + field_module_name = 28, + field_name = 29, + field_object = 30, + field_operator = 31, + field_operators = 32, + field_parameters = 33, + field_pattern = 34, + field_prefix = 35, + field_prefix_operator = 36, + field_real = 37, + field_return_type = 38, + field_right = 39, + field_start = 40, + field_step = 41, + field_stop = 42, + field_string_content = 43, + field_subject = 44, + field_subscript = 45, + field_suffix = 46, + field_superclasses = 47, + field_target = 48, + field_test = 49, + field_trailing_comma = 50, + field_type = 51, + field_type_parameter = 52, + field_type_parameters = 53, + field_value = 54, + field_vararg = 55, }; static const char * const ts_field_names[] = { @@ -2174,6 +2182,7 @@ static const char * const ts_field_names[] = { [field_imaginary] = "imaginary", [field_inner] = "inner", [field_interpolation] = "interpolation", + [field_is_lazy] = "is_lazy", [field_key] = "key", [field_kwarg] = "kwarg", [field_left] = "left", @@ -2229,147 +2238,151 @@ static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [20] = {.index = 21, .length = 4}, [21] = {.index = 25, .length = 4}, [22] = {.index = 29, .length = 2}, - [23] = {.index = 31, .length = 1}, - [24] = {.index = 32, .length = 2}, - [25] = {.index = 34, .length = 2}, - [26] = {.index = 36, .length = 1}, - [27] = {.index = 37, .length = 2}, - [28] = {.index = 39, .length = 1}, - [29] = {.index = 40, .length = 2}, - [30] = {.index = 42, .length = 1}, - [31] = {.index = 43, .length = 1}, - [32] = {.index = 44, .length = 1}, - [33] = {.index = 45, .length = 1}, - [34] = {.index = 45, .length = 1}, - [35] = {.index = 37, .length = 2}, - [36] = {.index = 46, .length = 2}, + [23] = {.index = 31, .length = 2}, + [24] = {.index = 33, .length = 2}, + [25] = {.index = 35, .length = 1}, + [26] = {.index = 36, .length = 2}, + [27] = {.index = 38, .length = 2}, + [28] = {.index = 40, .length = 1}, + [29] = {.index = 41, .length = 1}, + [30] = {.index = 42, .length = 2}, + [31] = {.index = 44, .length = 1}, + [32] = {.index = 45, .length = 1}, + [33] = {.index = 46, .length = 1}, + [34] = {.index = 47, .length = 1}, + [35] = {.index = 47, .length = 1}, + [36] = {.index = 31, .length = 2}, [37] = {.index = 48, .length = 2}, [38] = {.index = 50, .length = 2}, - [39] = {.index = 52, .length = 3}, - [40] = {.index = 55, .length = 2}, - [41] = {.index = 57, .length = 1}, - [42] = {.index = 58, .length = 2}, - [43] = {.index = 60, .length = 1}, - [44] = {.index = 61, .length = 2}, + [39] = {.index = 52, .length = 2}, + [40] = {.index = 54, .length = 3}, + [41] = {.index = 57, .length = 2}, + [42] = {.index = 59, .length = 1}, + [43] = {.index = 60, .length = 2}, + [44] = {.index = 62, .length = 1}, [45] = {.index = 63, .length = 2}, - [46] = {.index = 65, .length = 1}, - [47] = {.index = 66, .length = 2}, - [48] = {.index = 68, .length = 1}, - [50] = {.index = 69, .length = 3}, - [51] = {.index = 72, .length = 1}, - [52] = {.index = 73, .length = 2}, - [53] = {.index = 75, .length = 1}, - [54] = {.index = 76, .length = 2}, + [46] = {.index = 65, .length = 2}, + [47] = {.index = 67, .length = 1}, + [48] = {.index = 68, .length = 2}, + [49] = {.index = 70, .length = 1}, + [51] = {.index = 71, .length = 1}, + [52] = {.index = 72, .length = 3}, + [53] = {.index = 75, .length = 2}, + [54] = {.index = 77, .length = 1}, [55] = {.index = 78, .length = 2}, - [56] = {.index = 44, .length = 1}, - [57] = {.index = 80, .length = 1}, - [58] = {.index = 81, .length = 2}, + [56] = {.index = 80, .length = 2}, + [57] = {.index = 46, .length = 1}, + [58] = {.index = 82, .length = 1}, [59] = {.index = 83, .length = 2}, - [60] = {.index = 83, .length = 2}, + [60] = {.index = 85, .length = 2}, [61] = {.index = 85, .length = 2}, [62] = {.index = 87, .length = 2}, [63] = {.index = 89, .length = 2}, [64] = {.index = 91, .length = 2}, - [65] = {.index = 93, .length = 1}, - [66] = {.index = 94, .length = 2}, - [67] = {.index = 43, .length = 1}, - [68] = {.index = 96, .length = 1}, - [69] = {.index = 97, .length = 1}, - [70] = {.index = 98, .length = 2}, + [65] = {.index = 93, .length = 2}, + [66] = {.index = 95, .length = 1}, + [67] = {.index = 96, .length = 2}, + [68] = {.index = 45, .length = 1}, + [69] = {.index = 98, .length = 1}, + [70] = {.index = 99, .length = 1}, [71] = {.index = 100, .length = 2}, - [72] = {.index = 100, .length = 2}, - [74] = {.index = 102, .length = 1}, - [75] = {.index = 103, .length = 3}, - [76] = {.index = 106, .length = 3}, - [77] = {.index = 109, .length = 3}, - [78] = {.index = 112, .length = 1}, + [72] = {.index = 102, .length = 2}, + [73] = {.index = 102, .length = 2}, + [75] = {.index = 104, .length = 3}, + [76] = {.index = 107, .length = 2}, + [77] = {.index = 109, .length = 1}, + [78] = {.index = 110, .length = 3}, [79] = {.index = 113, .length = 3}, [80] = {.index = 116, .length = 3}, - [81] = {.index = 119, .length = 2}, - [82] = {.index = 121, .length = 2}, - [83] = {.index = 123, .length = 1}, - [84] = {.index = 124, .length = 2}, - [85] = {.index = 126, .length = 2}, - [86] = {.index = 128, .length = 1}, - [87] = {.index = 129, .length = 3}, - [88] = {.index = 132, .length = 3}, - [89] = {.index = 135, .length = 3}, - [90] = {.index = 138, .length = 3}, - [91] = {.index = 141, .length = 3}, - [92] = {.index = 144, .length = 3}, - [93] = {.index = 85, .length = 2}, - [94] = {.index = 147, .length = 1}, - [95] = {.index = 148, .length = 2}, - [96] = {.index = 150, .length = 1}, - [97] = {.index = 151, .length = 2}, - [98] = {.index = 153, .length = 2}, - [99] = {.index = 155, .length = 4}, - [100] = {.index = 159, .length = 2}, - [101] = {.index = 161, .length = 4}, - [102] = {.index = 165, .length = 4}, - [103] = {.index = 169, .length = 2}, - [104] = {.index = 171, .length = 3}, - [105] = {.index = 174, .length = 3}, - [106] = {.index = 177, .length = 4}, - [107] = {.index = 181, .length = 2}, - [108] = {.index = 183, .length = 2}, - [109] = {.index = 185, .length = 1}, - [110] = {.index = 186, .length = 1}, - [111] = {.index = 187, .length = 3}, - [112] = {.index = 190, .length = 2}, - [113] = {.index = 192, .length = 2}, - [114] = {.index = 194, .length = 4}, - [115] = {.index = 198, .length = 4}, - [116] = {.index = 202, .length = 4}, - [117] = {.index = 206, .length = 4}, - [118] = {.index = 210, .length = 4}, - [119] = {.index = 214, .length = 3}, - [120] = {.index = 217, .length = 2}, - [121] = {.index = 219, .length = 2}, - [122] = {.index = 221, .length = 2}, - [123] = {.index = 223, .length = 3}, - [124] = {.index = 226, .length = 5}, - [125] = {.index = 231, .length = 3}, - [126] = {.index = 234, .length = 4}, - [127] = {.index = 238, .length = 4}, - [128] = {.index = 242, .length = 4}, - [129] = {.index = 246, .length = 4}, - [130] = {.index = 250, .length = 2}, - [131] = {.index = 252, .length = 1}, - [132] = {.index = 253, .length = 3}, - [133] = {.index = 256, .length = 1}, - [134] = {.index = 257, .length = 2}, - [135] = {.index = 259, .length = 2}, - [136] = {.index = 261, .length = 1}, - [137] = {.index = 262, .length = 4}, - [138] = {.index = 266, .length = 5}, - [139] = {.index = 271, .length = 5}, - [140] = {.index = 276, .length = 3}, - [141] = {.index = 279, .length = 3}, - [142] = {.index = 282, .length = 4}, - [143] = {.index = 286, .length = 4}, - [144] = {.index = 290, .length = 4}, - [145] = {.index = 294, .length = 5}, - [146] = {.index = 299, .length = 5}, - [147] = {.index = 304, .length = 2}, - [148] = {.index = 306, .length = 3}, - [149] = {.index = 309, .length = 4}, - [150] = {.index = 313, .length = 3}, - [151] = {.index = 316, .length = 3}, - [152] = {.index = 319, .length = 5}, - [153] = {.index = 324, .length = 5}, - [154] = {.index = 329, .length = 5}, - [155] = {.index = 334, .length = 5}, - [156] = {.index = 339, .length = 5}, - [157] = {.index = 344, .length = 3}, - [158] = {.index = 347, .length = 3}, - [159] = {.index = 350, .length = 4}, - [160] = {.index = 354, .length = 2}, - [161] = {.index = 356, .length = 6}, - [162] = {.index = 362, .length = 6}, - [163] = {.index = 368, .length = 3}, - [164] = {.index = 371, .length = 4}, - [165] = {.index = 375, .length = 4}, + [81] = {.index = 119, .length = 1}, + [82] = {.index = 120, .length = 3}, + [83] = {.index = 123, .length = 3}, + [84] = {.index = 126, .length = 2}, + [85] = {.index = 128, .length = 2}, + [86] = {.index = 130, .length = 1}, + [87] = {.index = 131, .length = 2}, + [88] = {.index = 133, .length = 2}, + [89] = {.index = 135, .length = 1}, + [90] = {.index = 136, .length = 3}, + [91] = {.index = 139, .length = 3}, + [92] = {.index = 142, .length = 3}, + [93] = {.index = 145, .length = 3}, + [94] = {.index = 148, .length = 3}, + [95] = {.index = 151, .length = 3}, + [96] = {.index = 87, .length = 2}, + [97] = {.index = 154, .length = 1}, + [98] = {.index = 155, .length = 2}, + [99] = {.index = 157, .length = 1}, + [100] = {.index = 158, .length = 2}, + [101] = {.index = 160, .length = 2}, + [102] = {.index = 162, .length = 4}, + [103] = {.index = 166, .length = 2}, + [104] = {.index = 168, .length = 4}, + [105] = {.index = 172, .length = 4}, + [106] = {.index = 176, .length = 2}, + [107] = {.index = 178, .length = 3}, + [108] = {.index = 181, .length = 3}, + [109] = {.index = 184, .length = 4}, + [110] = {.index = 188, .length = 2}, + [111] = {.index = 190, .length = 2}, + [112] = {.index = 192, .length = 1}, + [113] = {.index = 193, .length = 1}, + [114] = {.index = 194, .length = 3}, + [115] = {.index = 197, .length = 2}, + [116] = {.index = 199, .length = 2}, + [117] = {.index = 201, .length = 4}, + [118] = {.index = 205, .length = 4}, + [119] = {.index = 209, .length = 4}, + [120] = {.index = 213, .length = 4}, + [121] = {.index = 217, .length = 4}, + [122] = {.index = 221, .length = 3}, + [123] = {.index = 224, .length = 2}, + [124] = {.index = 226, .length = 2}, + [125] = {.index = 228, .length = 3}, + [126] = {.index = 231, .length = 2}, + [127] = {.index = 233, .length = 3}, + [128] = {.index = 236, .length = 5}, + [129] = {.index = 241, .length = 3}, + [130] = {.index = 244, .length = 4}, + [131] = {.index = 248, .length = 4}, + [132] = {.index = 252, .length = 4}, + [133] = {.index = 256, .length = 4}, + [134] = {.index = 260, .length = 2}, + [135] = {.index = 262, .length = 1}, + [136] = {.index = 263, .length = 3}, + [137] = {.index = 266, .length = 1}, + [138] = {.index = 267, .length = 2}, + [139] = {.index = 269, .length = 2}, + [140] = {.index = 271, .length = 1}, + [141] = {.index = 272, .length = 4}, + [142] = {.index = 276, .length = 5}, + [143] = {.index = 281, .length = 5}, + [144] = {.index = 286, .length = 3}, + [145] = {.index = 289, .length = 3}, + [146] = {.index = 292, .length = 4}, + [147] = {.index = 296, .length = 4}, + [148] = {.index = 300, .length = 4}, + [149] = {.index = 304, .length = 5}, + [150] = {.index = 309, .length = 5}, + [151] = {.index = 314, .length = 2}, + [152] = {.index = 316, .length = 3}, + [153] = {.index = 319, .length = 4}, + [154] = {.index = 323, .length = 3}, + [155] = {.index = 326, .length = 3}, + [156] = {.index = 329, .length = 5}, + [157] = {.index = 334, .length = 5}, + [158] = {.index = 339, .length = 5}, + [159] = {.index = 344, .length = 5}, + [160] = {.index = 349, .length = 5}, + [161] = {.index = 354, .length = 3}, + [162] = {.index = 357, .length = 3}, + [163] = {.index = 360, .length = 4}, + [164] = {.index = 364, .length = 2}, + [165] = {.index = 366, .length = 6}, + [166] = {.index = 372, .length = 6}, + [167] = {.index = 378, .length = 3}, + [168] = {.index = 381, .length = 4}, + [169] = {.index = 385, .length = 4}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -2422,486 +2435,500 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_string_content, 0, .inherited = true}, {field_string_content, 1, .inherited = true}, [29] = + {field_is_lazy, 0}, + {field_name, 2, .inherited = true}, + [31] = + {field_name, 0}, + {field_value, 2}, + [33] = {field_name, 0}, {field_name, 1, .inherited = true}, - [31] = + [35] = {field_name, 1}, - [32] = + [36] = {field_element, 0}, {field_trailing_comma, 1}, - [34] = + [38] = {field_element, 1, .inherited = true}, {field_trailing_comma, 1, .inherited = true}, - [36] = + [40] = {field_inner, 1}, - [37] = - {field_name, 0}, - {field_value, 2}, - [39] = + [41] = {field_argument, 2, .inherited = true}, - [40] = + [42] = {field_argument, 1}, {field_argument, 2, .inherited = true}, - [42] = + [44] = {field_cause, 2}, - [43] = + [45] = {field_element, 1}, - [44] = + [46] = {field_body, 2}, - [45] = + [47] = {field_kwarg, 1}, - [46] = + [48] = {field_element, 0, .inherited = true}, {field_element, 1, .inherited = true}, - [48] = + [50] = {field_left, 0}, {field_type, 2}, - [50] = + [52] = {field_left, 0}, {field_right, 2}, - [52] = + [54] = {field_left, 0}, {field_operator, 1}, {field_right, 2}, - [55] = + [57] = {field_attribute, 2}, {field_object, 0}, - [57] = + [59] = {field_operators, 0}, - [58] = + [60] = {field_operators, 0, .inherited = true}, {field_operators, 1, .inherited = true}, - [60] = + [62] = {field_expression, 1}, - [61] = + [63] = {field_name, 0, .inherited = true}, {field_name, 1, .inherited = true}, - [63] = + [65] = {field_alias, 2}, {field_name, 0}, - [65] = + [67] = {field_name, 3, .inherited = true}, - [66] = + [68] = {field_module_name, 1}, {field_name, 3, .inherited = true}, - [68] = + [70] = {field_module_name, 1}, - [69] = + [71] = + {field_body, 1}, + [72] = {field_element, 0}, {field_element, 1, .inherited = true}, {field_trailing_comma, 2}, - [72] = - {field_body, 1}, - [73] = + [75] = {field_argument, 0, .inherited = true}, {field_argument, 1, .inherited = true}, - [75] = + [77] = {field_cause, 3}, - [76] = + [78] = {field_condition, 1}, {field_consequence, 3}, - [78] = + [80] = {field_body, 3}, {field_condition, 1}, - [80] = + [82] = {field_body, 3}, - [81] = + [83] = {field_alias, 2}, {field_value, 0}, - [83] = + [85] = {field_cases, 3}, {field_subject, 1}, - [85] = + [87] = {field_element, 1}, {field_element, 2, .inherited = true}, - [87] = + [89] = {field_key, 0}, {field_value, 2}, - [89] = + [91] = {field_name, 1}, {field_value, 3}, - [91] = + [93] = {field_body, 3}, {field_name, 1}, - [93] = + [95] = {field_type, 2}, - [94] = + [96] = {field_body, 3}, {field_parameters, 1}, - [96] = + [98] = {field_stop, 1}, - [97] = + [99] = {field_start, 0}, - [98] = + [100] = {field_subscript, 2}, {field_value, 0}, - [100] = + [102] = {field_operators, 0}, {field_operators, 1}, - [102] = + [104] = + {field_is_lazy, 0}, + {field_module_name, 2}, + {field_name, 4, .inherited = true}, + [107] = + {field_is_lazy, 0}, + {field_module_name, 2}, + [109] = {field_alternative, 0}, - [103] = + [110] = {field_alternative, 4}, {field_condition, 1}, {field_consequence, 3}, - [106] = + [113] = {field_alternative, 4, .inherited = true}, {field_condition, 1}, {field_consequence, 3}, - [109] = + [116] = {field_condition, 1}, {field_consequence, 3}, {field_consequence, 4}, - [112] = + [119] = {field_body, 4}, - [113] = + [120] = {field_alternative, 4}, {field_body, 3}, {field_condition, 1}, - [116] = + [123] = {field_body, 3}, {field_body, 4}, {field_condition, 1}, - [119] = + [126] = {field_body, 2}, {field_body, 3}, - [121] = + [128] = {field_body, 3}, {field_body, 4}, - [123] = + [130] = {field_real, 0}, - [124] = + [131] = {field_bound, 1, .inherited = true}, {field_name, 0}, - [126] = + [133] = {field_default, 1, .inherited = true}, {field_name, 0}, - [128] = + [135] = {field_type_parameter, 1}, - [129] = + [136] = {field_body, 4}, {field_name, 1}, {field_parameters, 2}, - [132] = + [139] = {field_name, 1}, {field_type_parameters, 2}, {field_value, 4}, - [135] = + [142] = {field_body, 3}, {field_body, 4}, {field_name, 1}, - [138] = + [145] = {field_body, 4}, {field_name, 1}, {field_type_parameters, 2}, - [141] = + [148] = {field_body, 4}, {field_name, 1}, {field_superclasses, 2}, - [144] = + [151] = {field_left, 0}, {field_right, 4}, {field_type, 2}, - [147] = + [154] = {field_step, 2}, - [148] = + [155] = {field_start, 0}, {field_stop, 2}, - [150] = + [157] = {field_name, 4, .inherited = true}, - [151] = + [158] = {field_module_name, 1}, {field_name, 4, .inherited = true}, - [153] = + [160] = {field_left, 1}, {field_right, 3}, - [155] = + [162] = {field_alternative, 4, .inherited = true}, {field_alternative, 5}, {field_condition, 1}, {field_consequence, 3}, - [159] = + [166] = {field_alternative, 0, .inherited = true}, {field_alternative, 1, .inherited = true}, - [161] = + [168] = {field_alternative, 5}, {field_condition, 1}, {field_consequence, 3}, {field_consequence, 4}, - [165] = + [172] = {field_alternative, 5, .inherited = true}, {field_condition, 1}, {field_consequence, 3}, {field_consequence, 4}, - [169] = + [176] = {field_body, 4}, {field_body, 5}, - [171] = + [178] = {field_body, 5}, {field_name, 2}, {field_parameters, 3}, - [174] = + [181] = {field_body, 5}, {field_left, 1}, {field_right, 3}, - [177] = + [184] = {field_alternative, 5}, {field_body, 3}, {field_body, 4}, {field_condition, 1}, - [181] = + [188] = {field_prefix_operator, 0}, {field_real, 1}, - [183] = + [190] = {field_default, 2, .inherited = true}, {field_name, 1}, - [185] = + [192] = {field_bound, 1}, - [186] = + [193] = {field_default, 1}, - [187] = + [194] = {field_bound, 1, .inherited = true}, {field_default, 2, .inherited = true}, {field_name, 0}, - [190] = + [197] = {field_type_parameter, 1}, {field_type_parameter, 2, .inherited = true}, - [192] = + [199] = {field_type_parameter, 0, .inherited = true}, {field_type_parameter, 1, .inherited = true}, - [194] = + [201] = {field_body, 4}, {field_body, 5}, {field_name, 1}, {field_parameters, 2}, - [198] = + [205] = {field_body, 5}, {field_name, 1}, {field_parameters, 3}, {field_type_parameters, 2}, - [202] = + [209] = {field_body, 4}, {field_body, 5}, {field_name, 1}, {field_type_parameters, 2}, - [206] = + [213] = {field_body, 5}, {field_name, 1}, {field_superclasses, 3}, {field_type_parameters, 2}, - [210] = + [217] = {field_body, 4}, {field_body, 5}, {field_name, 1}, {field_superclasses, 2}, - [214] = + [221] = {field_name, 0}, {field_type, 2}, {field_value, 4}, - [217] = + [224] = {field_step, 3}, {field_stop, 1}, - [219] = + [226] = {field_start, 0}, {field_step, 3}, - [221] = + [228] = + {field_is_lazy, 0}, + {field_module_name, 2}, + {field_name, 5, .inherited = true}, + [231] = {field_left, 2}, {field_right, 4}, - [223] = + [233] = {field_left, 1}, {field_right, 3}, {field_right, 4}, - [226] = + [236] = {field_alternative, 5, .inherited = true}, {field_alternative, 6}, {field_condition, 1}, {field_consequence, 3}, {field_consequence, 4}, - [231] = + [241] = {field_body, 6}, {field_left, 2}, {field_right, 4}, - [234] = + [244] = {field_body, 5}, {field_body, 6}, {field_name, 2}, {field_parameters, 3}, - [238] = + [248] = {field_body, 6}, {field_name, 2}, {field_parameters, 4}, {field_type_parameters, 3}, - [242] = + [252] = {field_alternative, 6}, {field_body, 5}, {field_left, 1}, {field_right, 3}, - [246] = + [256] = {field_body, 5}, {field_body, 6}, {field_left, 1}, {field_right, 3}, - [250] = + [260] = {field_body, 3}, {field_type, 1}, - [252] = + [262] = {field_content, 1}, - [253] = + [263] = {field_imaginary, 2}, {field_operator, 1}, {field_real, 0}, - [256] = + [266] = {field_test, 1}, - [257] = + [267] = {field_body, 3}, {field_pattern, 1}, - [259] = + [269] = {field_alias, 2}, {field_pattern, 0}, - [261] = + [271] = {field_class, 0}, - [262] = + [272] = {field_body, 6}, {field_name, 1}, {field_parameters, 2}, {field_return_type, 4}, - [266] = + [276] = {field_body, 5}, {field_body, 6}, {field_name, 1}, {field_parameters, 3}, {field_type_parameters, 2}, - [271] = + [281] = {field_body, 5}, {field_body, 6}, {field_name, 1}, {field_superclasses, 3}, {field_type_parameters, 2}, - [276] = + [286] = {field_start, 0}, {field_step, 4}, {field_stop, 2}, - [279] = + [289] = {field_left, 2}, {field_right, 4}, {field_right, 5}, - [282] = + [292] = {field_alternative, 7}, {field_body, 6}, {field_left, 2}, {field_right, 4}, - [286] = + [296] = {field_body, 6}, {field_body, 7}, {field_left, 2}, {field_right, 4}, - [290] = + [300] = {field_body, 7}, {field_name, 2}, {field_parameters, 3}, {field_return_type, 5}, - [294] = + [304] = {field_body, 6}, {field_body, 7}, {field_name, 2}, {field_parameters, 4}, {field_type_parameters, 3}, - [299] = + [309] = {field_alternative, 7}, {field_body, 5}, {field_body, 6}, {field_left, 1}, {field_right, 3}, - [304] = + [314] = {field_body, 4}, {field_type, 2}, - [306] = + [316] = {field_body, 3}, {field_body, 4}, {field_type, 1}, - [309] = + [319] = {field_imaginary, 3}, {field_operator, 2}, {field_prefix_operator, 0}, {field_real, 1}, - [313] = + [323] = {field_body, 3}, {field_body, 4}, {field_pattern, 1}, - [316] = + [326] = {field_body, 4}, {field_guard, 2}, {field_pattern, 1}, - [319] = + [329] = {field_body, 6}, {field_body, 7}, {field_name, 1}, {field_parameters, 2}, {field_return_type, 4}, - [324] = + [334] = {field_body, 7}, {field_name, 1}, {field_parameters, 3}, {field_return_type, 5}, {field_type_parameters, 2}, - [329] = + [339] = {field_alternative, 8}, {field_body, 6}, {field_body, 7}, {field_left, 2}, {field_right, 4}, - [334] = + [344] = {field_body, 7}, {field_body, 8}, {field_name, 2}, {field_parameters, 3}, {field_return_type, 5}, - [339] = + [349] = {field_body, 8}, {field_name, 2}, {field_parameters, 4}, {field_return_type, 6}, {field_type_parameters, 3}, - [344] = + [354] = {field_body, 4}, {field_body, 5}, {field_type, 2}, - [347] = + [357] = {field_alias, 3}, {field_body, 5}, {field_type, 1}, - [350] = + [360] = {field_body, 4}, {field_body, 5}, {field_guard, 2}, {field_pattern, 1}, - [354] = + [364] = {field_attribute, 0}, {field_value, 2}, - [356] = + [366] = {field_body, 7}, {field_body, 8}, {field_name, 1}, {field_parameters, 3}, {field_return_type, 5}, {field_type_parameters, 2}, - [362] = + [372] = {field_body, 8}, {field_body, 9}, {field_name, 2}, {field_parameters, 4}, {field_return_type, 6}, {field_type_parameters, 3}, - [368] = + [378] = {field_alias, 4}, {field_body, 6}, {field_type, 2}, - [371] = + [381] = {field_alias, 3}, {field_body, 5}, {field_body, 6}, {field_type, 1}, - [375] = + [385] = {field_alias, 4}, {field_body, 6}, {field_body, 7}, @@ -2916,126 +2943,126 @@ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE [8] = { [1] = sym_identifier, }, - [27] = { + [23] = { [0] = sym_identifier, }, - [33] = { + [34] = { [1] = sym_identifier, }, - [49] = { + [50] = { [1] = sym_parenthesized_expression, }, - [54] = { - [3] = sym_block, - }, [55] = { [3] = sym_block, }, [56] = { - [2] = sym_block, + [3] = sym_block, }, [57] = { + [2] = sym_block, + }, + [58] = { [3] = sym_block, }, - [59] = { + [60] = { [1] = sym_tuple, }, - [64] = { + [65] = { [3] = sym_block, }, - [67] = { + [68] = { [1] = sym_parenthesized_expression, }, - [71] = { + [72] = { [0] = anon_alias_sym_notin, [1] = anon_alias_sym_notin, }, - [72] = { + [73] = { [0] = anon_alias_sym_isnot, [1] = anon_alias_sym_isnot, }, - [73] = { + [74] = { [0] = alias_sym_format_expression, }, - [75] = { + [78] = { [3] = sym_block, }, - [76] = { + [79] = { [3] = sym_block, }, - [78] = { + [81] = { [4] = sym_block, }, - [79] = { + [82] = { [3] = sym_block, }, - [87] = { + [90] = { [4] = sym_block, }, - [90] = { + [93] = { [4] = sym_block, }, - [91] = { + [94] = { [4] = sym_block, }, - [93] = { + [96] = { [1] = sym_parenthesized_expression, }, - [99] = { + [102] = { [3] = sym_block, }, - [104] = { + [107] = { [5] = sym_block, }, - [105] = { + [108] = { [5] = sym_block, }, - [115] = { + [118] = { [5] = sym_block, }, - [117] = { + [120] = { [5] = sym_block, }, - [125] = { + [129] = { [6] = sym_block, }, - [127] = { + [131] = { [6] = sym_block, }, - [128] = { + [132] = { [5] = sym_block, }, - [130] = { + [134] = { [3] = sym_block, }, - [134] = { + [138] = { [3] = sym_block, }, - [137] = { + [141] = { [6] = sym_block, }, - [142] = { + [146] = { [6] = sym_block, }, - [144] = { + [148] = { [7] = sym_block, }, - [147] = { + [151] = { [4] = sym_block, }, - [151] = { + [155] = { [4] = sym_block, }, - [153] = { + [157] = { [7] = sym_block, }, - [156] = { + [160] = { [8] = sym_block, }, - [158] = { + [162] = { [5] = sym_block, }, - [163] = { + [167] = { [6] = sym_block, }, }; @@ -3061,8 +3088,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1] = 1, [2] = 2, [3] = 3, - [4] = 2, - [5] = 5, + [4] = 4, + [5] = 2, [6] = 6, [7] = 7, [8] = 8, @@ -3088,41 +3115,41 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [28] = 28, [29] = 29, [30] = 30, - [31] = 3, - [32] = 5, + [31] = 31, + [32] = 4, [33] = 6, - [34] = 7, - [35] = 8, - [36] = 9, - [37] = 10, - [38] = 11, - [39] = 12, - [40] = 13, - [41] = 14, - [42] = 15, - [43] = 16, - [44] = 17, - [45] = 18, - [46] = 19, - [47] = 20, - [48] = 21, - [49] = 22, - [50] = 23, - [51] = 24, - [52] = 25, - [53] = 26, - [54] = 27, - [55] = 28, - [56] = 56, - [57] = 29, - [58] = 30, - [59] = 56, + [34] = 8, + [35] = 9, + [36] = 10, + [37] = 11, + [38] = 12, + [39] = 13, + [40] = 14, + [41] = 15, + [42] = 16, + [43] = 17, + [44] = 18, + [45] = 19, + [46] = 20, + [47] = 21, + [48] = 22, + [49] = 23, + [50] = 24, + [51] = 25, + [52] = 26, + [53] = 27, + [54] = 28, + [55] = 29, + [56] = 30, + [57] = 31, + [58] = 3, + [59] = 7, [60] = 60, - [61] = 61, + [61] = 60, [62] = 62, - [63] = 61, - [64] = 60, - [65] = 61, + [63] = 60, + [64] = 64, + [65] = 62, [66] = 66, [67] = 66, [68] = 68, @@ -3134,7 +3161,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [74] = 74, [75] = 75, [76] = 76, - [77] = 77, + [77] = 75, [78] = 78, [79] = 79, [80] = 80, @@ -3142,210 +3169,210 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [82] = 82, [83] = 83, [84] = 84, - [85] = 71, - [86] = 72, + [85] = 85, + [86] = 86, [87] = 87, - [88] = 74, - [89] = 75, - [90] = 80, - [91] = 82, - [92] = 92, - [93] = 83, - [94] = 94, - [95] = 87, - [96] = 84, - [97] = 94, - [98] = 98, - [99] = 76, + [88] = 88, + [89] = 89, + [90] = 69, + [91] = 74, + [92] = 70, + [93] = 76, + [94] = 68, + [95] = 95, + [96] = 81, + [97] = 71, + [98] = 87, + [99] = 79, [100] = 100, - [101] = 100, - [102] = 102, - [103] = 77, - [104] = 104, - [105] = 105, - [106] = 102, + [101] = 95, + [102] = 80, + [103] = 103, + [104] = 100, + [105] = 103, + [106] = 106, [107] = 107, - [108] = 104, - [109] = 105, + [108] = 107, + [109] = 82, [110] = 110, - [111] = 78, - [112] = 112, - [113] = 79, - [114] = 107, + [111] = 110, + [112] = 83, + [113] = 113, + [114] = 84, [115] = 115, - [116] = 116, - [117] = 110, - [118] = 92, - [119] = 70, - [120] = 112, - [121] = 81, + [116] = 113, + [117] = 85, + [118] = 115, + [119] = 119, + [120] = 72, + [121] = 86, [122] = 73, - [123] = 115, - [124] = 69, - [125] = 116, - [126] = 98, + [123] = 106, + [124] = 119, + [125] = 88, + [126] = 89, [127] = 127, [128] = 128, - [129] = 128, + [129] = 127, [130] = 127, [131] = 128, - [132] = 127, + [132] = 128, [133] = 133, [134] = 134, [135] = 135, [136] = 136, [137] = 137, [138] = 136, - [139] = 139, + [139] = 136, [140] = 136, - [141] = 136, - [142] = 142, - [143] = 137, - [144] = 136, - [145] = 137, - [146] = 146, - [147] = 136, - [148] = 134, - [149] = 137, + [141] = 141, + [142] = 137, + [143] = 143, + [144] = 144, + [145] = 136, + [146] = 136, + [147] = 137, + [148] = 135, + [149] = 134, [150] = 137, - [151] = 146, + [151] = 137, [152] = 137, - [153] = 153, + [153] = 144, [154] = 154, [155] = 155, [156] = 156, [157] = 157, - [158] = 158, + [158] = 157, [159] = 159, - [160] = 157, + [160] = 159, [161] = 161, - [162] = 159, - [163] = 157, + [162] = 162, + [163] = 159, [164] = 164, - [165] = 164, - [166] = 164, - [167] = 164, - [168] = 168, - [169] = 168, - [170] = 170, + [165] = 165, + [166] = 165, + [167] = 165, + [168] = 165, + [169] = 169, + [170] = 169, [171] = 171, [172] = 172, [173] = 173, - [174] = 168, + [174] = 173, [175] = 175, [176] = 176, [177] = 177, - [178] = 170, - [179] = 171, - [180] = 172, - [181] = 173, - [182] = 176, + [178] = 178, + [179] = 169, + [180] = 180, + [181] = 178, + [182] = 182, [183] = 183, [184] = 184, - [185] = 185, - [186] = 186, - [187] = 176, - [188] = 176, - [189] = 189, + [185] = 171, + [186] = 178, + [187] = 172, + [188] = 178, + [189] = 184, [190] = 190, - [191] = 170, + [191] = 191, [192] = 192, - [193] = 172, + [193] = 193, [194] = 194, - [195] = 195, - [196] = 196, - [197] = 197, + [195] = 193, + [196] = 194, + [197] = 173, [198] = 198, - [199] = 199, + [199] = 191, [200] = 200, - [201] = 189, - [202] = 195, - [203] = 196, - [204] = 204, - [205] = 205, - [206] = 194, - [207] = 197, - [208] = 194, - [209] = 198, - [210] = 199, - [211] = 199, - [212] = 195, - [213] = 196, - [214] = 198, - [215] = 189, - [216] = 200, - [217] = 217, - [218] = 194, - [219] = 197, - [220] = 171, - [221] = 195, - [222] = 196, - [223] = 198, - [224] = 189, - [225] = 200, + [201] = 201, + [202] = 202, + [203] = 172, + [204] = 198, + [205] = 191, + [206] = 200, + [207] = 201, + [208] = 208, + [209] = 209, + [210] = 208, + [211] = 171, + [212] = 208, + [213] = 192, + [214] = 214, + [215] = 192, + [216] = 193, + [217] = 194, + [218] = 198, + [219] = 191, + [220] = 200, + [221] = 201, + [222] = 209, + [223] = 208, + [224] = 224, + [225] = 193, [226] = 194, - [227] = 197, - [228] = 200, - [229] = 194, - [230] = 197, - [231] = 197, - [232] = 232, + [227] = 198, + [228] = 228, + [229] = 200, + [230] = 201, + [231] = 209, + [232] = 208, [233] = 233, - [234] = 234, - [235] = 235, - [236] = 236, - [237] = 237, - [238] = 232, - [239] = 239, - [240] = 232, - [241] = 232, - [242] = 242, + [234] = 209, + [235] = 208, + [236] = 209, + [237] = 209, + [238] = 238, + [239] = 238, + [240] = 240, + [241] = 238, + [242] = 238, [243] = 243, [244] = 244, [245] = 245, [246] = 246, - [247] = 246, - [248] = 243, + [247] = 247, + [248] = 248, [249] = 249, [250] = 250, - [251] = 250, + [251] = 248, [252] = 252, - [253] = 253, - [254] = 249, - [255] = 252, - [256] = 252, - [257] = 253, - [258] = 249, - [259] = 252, - [260] = 253, - [261] = 249, - [262] = 253, - [263] = 250, - [264] = 264, + [253] = 249, + [254] = 254, + [255] = 254, + [256] = 254, + [257] = 257, + [258] = 258, + [259] = 257, + [260] = 258, + [261] = 257, + [262] = 258, + [263] = 257, + [264] = 258, [265] = 265, [266] = 266, [267] = 267, - [268] = 266, + [268] = 268, [269] = 269, [270] = 270, - [271] = 265, - [272] = 272, + [271] = 271, + [272] = 266, [273] = 273, [274] = 274, [275] = 275, [276] = 276, - [277] = 277, + [277] = 270, [278] = 278, - [279] = 275, - [280] = 267, - [281] = 273, - [282] = 282, - [283] = 283, - [284] = 278, - [285] = 276, - [286] = 270, - [287] = 283, - [288] = 288, + [279] = 279, + [280] = 280, + [281] = 275, + [282] = 267, + [283] = 278, + [284] = 284, + [285] = 284, + [286] = 280, + [287] = 274, + [288] = 271, [289] = 289, [290] = 290, [291] = 291, @@ -3361,167 +3388,167 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [301] = 301, [302] = 302, [303] = 303, - [304] = 288, - [305] = 305, - [306] = 306, + [304] = 292, + [305] = 295, + [306] = 290, [307] = 307, [308] = 308, [309] = 309, - [310] = 305, - [311] = 295, + [310] = 310, + [311] = 311, [312] = 312, [313] = 313, [314] = 314, [315] = 315, - [316] = 316, + [316] = 312, [317] = 317, - [318] = 313, - [319] = 312, + [318] = 318, + [319] = 319, [320] = 320, [321] = 321, [322] = 322, [323] = 323, - [324] = 324, - [325] = 320, - [326] = 321, - [327] = 322, - [328] = 328, - [329] = 329, - [330] = 328, - [331] = 329, - [332] = 314, - [333] = 316, - [334] = 334, - [335] = 317, - [336] = 334, - [337] = 323, - [338] = 324, + [324] = 314, + [325] = 311, + [326] = 326, + [327] = 321, + [328] = 318, + [329] = 322, + [330] = 326, + [331] = 315, + [332] = 320, + [333] = 333, + [334] = 333, + [335] = 323, + [336] = 336, + [337] = 319, + [338] = 338, [339] = 339, [340] = 340, [341] = 341, [342] = 342, - [343] = 340, + [343] = 343, [344] = 344, [345] = 345, [346] = 346, [347] = 347, - [348] = 345, + [348] = 348, [349] = 349, [350] = 350, - [351] = 351, + [351] = 346, [352] = 352, [353] = 353, [354] = 354, [355] = 355, [356] = 356, - [357] = 356, - [358] = 358, - [359] = 341, + [357] = 342, + [358] = 338, + [359] = 339, [360] = 360, [361] = 361, [362] = 362, [363] = 363, [364] = 364, - [365] = 365, - [366] = 356, - [367] = 367, - [368] = 361, - [369] = 351, - [370] = 341, - [371] = 344, + [365] = 353, + [366] = 354, + [367] = 346, + [368] = 342, + [369] = 355, + [370] = 346, + [371] = 349, [372] = 372, - [373] = 373, - [374] = 353, - [375] = 362, - [376] = 360, - [377] = 377, - [378] = 378, - [379] = 361, - [380] = 380, - [381] = 364, - [382] = 351, - [383] = 383, - [384] = 384, - [385] = 385, - [386] = 353, - [387] = 360, - [388] = 344, - [389] = 344, - [390] = 378, - [391] = 340, - [392] = 356, - [393] = 361, - [394] = 364, - [395] = 351, - [396] = 353, - [397] = 397, - [398] = 360, - [399] = 354, - [400] = 344, - [401] = 340, - [402] = 402, - [403] = 340, - [404] = 350, - [405] = 356, - [406] = 406, + [373] = 353, + [374] = 374, + [375] = 355, + [376] = 338, + [377] = 339, + [378] = 360, + [379] = 342, + [380] = 353, + [381] = 360, + [382] = 338, + [383] = 339, + [384] = 360, + [385] = 342, + [386] = 386, + [387] = 387, + [388] = 349, + [389] = 372, + [390] = 349, + [391] = 372, + [392] = 350, + [393] = 393, + [394] = 394, + [395] = 374, + [396] = 372, + [397] = 374, + [398] = 398, + [399] = 372, + [400] = 400, + [401] = 343, + [402] = 398, + [403] = 403, + [404] = 404, + [405] = 405, + [406] = 346, [407] = 407, - [408] = 356, - [409] = 361, - [410] = 364, - [411] = 351, - [412] = 353, - [413] = 360, - [414] = 344, - [415] = 361, - [416] = 340, - [417] = 350, - [418] = 362, - [419] = 350, - [420] = 364, - [421] = 350, - [422] = 350, - [423] = 385, - [424] = 407, + [408] = 346, + [409] = 374, + [410] = 353, + [411] = 355, + [412] = 338, + [413] = 339, + [414] = 360, + [415] = 342, + [416] = 372, + [417] = 417, + [418] = 403, + [419] = 353, + [420] = 403, + [421] = 354, + [422] = 403, + [423] = 403, + [424] = 345, [425] = 425, - [426] = 351, - [427] = 353, - [428] = 360, - [429] = 380, - [430] = 430, - [431] = 378, - [432] = 432, - [433] = 402, - [434] = 397, - [435] = 364, - [436] = 436, - [437] = 437, - [438] = 438, + [426] = 355, + [427] = 425, + [428] = 339, + [429] = 429, + [430] = 360, + [431] = 394, + [432] = 403, + [433] = 338, + [434] = 434, + [435] = 405, + [436] = 348, + [437] = 347, + [438] = 355, [439] = 439, [440] = 440, [441] = 441, [442] = 442, [443] = 443, - [444] = 436, - [445] = 442, + [444] = 444, + [445] = 444, [446] = 446, [447] = 447, - [448] = 446, - [449] = 447, + [448] = 448, + [449] = 448, [450] = 450, - [451] = 440, + [451] = 439, [452] = 452, - [453] = 452, - [454] = 437, - [455] = 441, - [456] = 438, - [457] = 443, - [458] = 458, - [459] = 439, - [460] = 450, - [461] = 461, - [462] = 462, - [463] = 463, - [464] = 464, + [453] = 453, + [454] = 447, + [455] = 455, + [456] = 441, + [457] = 457, + [458] = 457, + [459] = 455, + [460] = 442, + [461] = 440, + [462] = 443, + [463] = 446, + [464] = 450, [465] = 465, [466] = 466, [467] = 467, @@ -3529,48 +3556,48 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [469] = 469, [470] = 470, [471] = 471, - [472] = 470, - [473] = 463, + [472] = 472, + [473] = 473, [474] = 474, - [475] = 294, - [476] = 466, - [477] = 477, + [475] = 475, + [476] = 476, + [477] = 475, [478] = 478, - [479] = 468, + [479] = 473, [480] = 480, [481] = 480, - [482] = 482, - [483] = 307, - [484] = 469, - [485] = 485, - [486] = 471, - [487] = 487, - [488] = 464, - [489] = 485, - [490] = 477, - [491] = 482, - [492] = 492, + [482] = 474, + [483] = 483, + [484] = 476, + [485] = 483, + [486] = 486, + [487] = 467, + [488] = 468, + [489] = 472, + [490] = 486, + [491] = 478, + [492] = 317, [493] = 493, [494] = 494, [495] = 495, [496] = 496, - [497] = 497, - [498] = 492, + [497] = 493, + [498] = 498, [499] = 499, [500] = 500, [501] = 501, [502] = 502, - [503] = 495, + [503] = 313, [504] = 496, - [505] = 499, - [506] = 500, - [507] = 501, - [508] = 493, - [509] = 509, + [505] = 498, + [506] = 506, + [507] = 507, + [508] = 507, + [509] = 506, [510] = 510, - [511] = 511, - [512] = 511, - [513] = 513, + [511] = 500, + [512] = 502, + [513] = 501, [514] = 514, [515] = 515, [516] = 516, @@ -3597,7 +3624,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [537] = 537, [538] = 538, [539] = 539, - [540] = 540, + [540] = 533, [541] = 541, [542] = 542, [543] = 543, @@ -3606,163 +3633,163 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [546] = 546, [547] = 547, [548] = 548, - [549] = 549, + [549] = 529, [550] = 550, - [551] = 551, - [552] = 521, + [551] = 531, + [552] = 538, [553] = 553, [554] = 554, - [555] = 555, + [555] = 544, [556] = 556, - [557] = 557, - [558] = 514, + [557] = 554, + [558] = 545, [559] = 559, [560] = 560, - [561] = 534, - [562] = 535, - [563] = 540, - [564] = 541, - [565] = 547, - [566] = 550, - [567] = 567, - [568] = 568, - [569] = 569, - [570] = 570, - [571] = 571, - [572] = 515, - [573] = 516, - [574] = 517, - [575] = 518, - [576] = 519, - [577] = 520, - [578] = 522, - [579] = 523, - [580] = 524, - [581] = 567, - [582] = 525, - [583] = 526, - [584] = 527, - [585] = 528, - [586] = 529, - [587] = 530, - [588] = 560, - [589] = 531, - [590] = 532, - [591] = 533, - [592] = 536, - [593] = 537, - [594] = 538, - [595] = 539, - [596] = 568, - [597] = 569, - [598] = 542, - [599] = 543, - [600] = 544, - [601] = 545, - [602] = 546, - [603] = 548, - [604] = 549, - [605] = 570, - [606] = 571, - [607] = 553, - [608] = 554, - [609] = 555, - [610] = 556, - [611] = 557, - [612] = 612, - [613] = 559, + [561] = 519, + [562] = 539, + [563] = 520, + [564] = 556, + [565] = 521, + [566] = 566, + [567] = 525, + [568] = 526, + [569] = 530, + [570] = 532, + [571] = 535, + [572] = 537, + [573] = 541, + [574] = 543, + [575] = 547, + [576] = 548, + [577] = 550, + [578] = 566, + [579] = 579, + [580] = 580, + [581] = 581, + [582] = 579, + [583] = 583, + [584] = 584, + [585] = 585, + [586] = 586, + [587] = 587, + [588] = 528, + [589] = 589, + [590] = 536, + [591] = 542, + [592] = 553, + [593] = 546, + [594] = 580, + [595] = 595, + [596] = 596, + [597] = 516, + [598] = 517, + [599] = 518, + [600] = 581, + [601] = 586, + [602] = 522, + [603] = 523, + [604] = 559, + [605] = 534, + [606] = 595, + [607] = 596, + [608] = 514, + [609] = 583, + [610] = 584, + [611] = 611, + [612] = 587, + [613] = 585, [614] = 614, - [615] = 615, - [616] = 616, + [615] = 560, + [616] = 611, [617] = 617, - [618] = 615, + [618] = 618, [619] = 619, [620] = 620, - [621] = 621, - [622] = 615, - [623] = 615, - [624] = 624, - [625] = 615, - [626] = 615, + [621] = 620, + [622] = 620, + [623] = 620, + [624] = 620, + [625] = 620, + [626] = 626, [627] = 627, [628] = 628, [629] = 629, - [630] = 630, - [631] = 627, + [630] = 629, + [631] = 631, [632] = 632, [633] = 633, [634] = 634, - [635] = 628, - [636] = 629, - [637] = 628, - [638] = 629, - [639] = 630, + [635] = 626, + [636] = 626, + [637] = 637, + [638] = 638, + [639] = 639, [640] = 640, - [641] = 641, - [642] = 642, - [643] = 633, - [644] = 634, - [645] = 632, - [646] = 628, - [647] = 629, - [648] = 630, - [649] = 640, - [650] = 634, - [651] = 642, + [641] = 634, + [642] = 628, + [643] = 628, + [644] = 644, + [645] = 644, + [646] = 629, + [647] = 633, + [648] = 648, + [649] = 634, + [650] = 637, + [651] = 648, [652] = 633, - [653] = 634, + [653] = 626, [654] = 640, - [655] = 627, - [656] = 632, - [657] = 657, - [658] = 627, - [659] = 632, - [660] = 641, - [661] = 630, - [662] = 662, - [663] = 628, - [664] = 629, - [665] = 630, - [666] = 640, - [667] = 641, - [668] = 642, - [669] = 633, - [670] = 634, - [671] = 642, - [672] = 640, - [673] = 627, - [674] = 632, - [675] = 657, - [676] = 657, - [677] = 657, - [678] = 678, - [679] = 657, - [680] = 641, - [681] = 628, - [682] = 629, - [683] = 630, + [655] = 631, + [656] = 629, + [657] = 644, + [658] = 648, + [659] = 638, + [660] = 638, + [661] = 644, + [662] = 634, + [663] = 637, + [664] = 631, + [665] = 629, + [666] = 626, + [667] = 638, + [668] = 631, + [669] = 648, + [670] = 648, + [671] = 633, + [672] = 634, + [673] = 628, + [674] = 644, + [675] = 633, + [676] = 634, + [677] = 637, + [678] = 640, + [679] = 640, + [680] = 631, + [681] = 629, + [682] = 626, + [683] = 638, [684] = 640, - [685] = 641, - [686] = 642, + [685] = 685, + [686] = 648, [687] = 633, - [688] = 634, - [689] = 633, - [690] = 627, - [691] = 632, - [692] = 657, - [693] = 642, - [694] = 641, - [695] = 695, - [696] = 696, - [697] = 697, + [688] = 628, + [689] = 631, + [690] = 690, + [691] = 638, + [692] = 628, + [693] = 693, + [694] = 694, + [695] = 637, + [696] = 637, + [697] = 644, [698] = 698, - [699] = 699, + [699] = 640, [700] = 700, [701] = 701, [702] = 702, [703] = 703, [704] = 704, - [705] = 705, + [705] = 704, [706] = 706, [707] = 707, [708] = 708, @@ -3782,7 +3809,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [722] = 722, [723] = 723, [724] = 724, - [725] = 719, + [725] = 725, [726] = 726, [727] = 727, [728] = 728, @@ -3797,509 +3824,509 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [737] = 737, [738] = 738, [739] = 739, - [740] = 734, + [740] = 740, [741] = 741, - [742] = 742, + [742] = 739, [743] = 743, - [744] = 616, - [745] = 617, - [746] = 619, - [747] = 620, + [744] = 744, + [745] = 745, + [746] = 746, + [747] = 747, [748] = 748, - [749] = 749, - [750] = 736, - [751] = 737, - [752] = 738, - [753] = 739, - [754] = 741, - [755] = 742, - [756] = 743, - [757] = 748, - [758] = 749, - [759] = 759, - [760] = 735, - [761] = 759, - [762] = 620, - [763] = 624, - [764] = 713, - [765] = 616, - [766] = 719, - [767] = 621, - [768] = 624, - [769] = 616, - [770] = 617, - [771] = 619, - [772] = 719, - [773] = 773, + [749] = 690, + [750] = 693, + [751] = 751, + [752] = 752, + [753] = 685, + [754] = 627, + [755] = 751, + [756] = 752, + [757] = 757, + [758] = 743, + [759] = 744, + [760] = 745, + [761] = 746, + [762] = 740, + [763] = 741, + [764] = 757, + [765] = 748, + [766] = 747, + [767] = 736, + [768] = 685, + [769] = 627, + [770] = 690, + [771] = 693, + [772] = 698, + [773] = 704, [774] = 774, - [775] = 619, - [776] = 620, - [777] = 712, - [778] = 617, - [779] = 719, - [780] = 773, - [781] = 774, - [782] = 621, - [783] = 734, - [784] = 759, - [785] = 735, - [786] = 736, - [787] = 737, - [788] = 738, - [789] = 739, - [790] = 735, - [791] = 741, - [792] = 742, - [793] = 743, - [794] = 621, - [795] = 624, - [796] = 736, - [797] = 748, - [798] = 749, - [799] = 737, - [800] = 738, + [775] = 704, + [776] = 685, + [777] = 627, + [778] = 778, + [779] = 694, + [780] = 704, + [781] = 694, + [782] = 698, + [783] = 737, + [784] = 690, + [785] = 693, + [786] = 778, + [787] = 774, + [788] = 741, + [789] = 704, + [790] = 694, + [791] = 698, + [792] = 702, + [793] = 701, + [794] = 703, + [795] = 700, + [796] = 751, + [797] = 752, + [798] = 757, + [799] = 747, + [800] = 740, [801] = 739, - [802] = 734, - [803] = 759, - [804] = 742, - [805] = 743, - [806] = 695, - [807] = 696, - [808] = 697, - [809] = 698, - [810] = 735, - [811] = 759, - [812] = 736, - [813] = 737, - [814] = 738, - [815] = 739, - [816] = 734, + [802] = 743, + [803] = 744, + [804] = 748, + [805] = 747, + [806] = 745, + [807] = 746, + [808] = 747, + [809] = 752, + [810] = 757, + [811] = 739, + [812] = 743, + [813] = 744, + [814] = 745, + [815] = 746, + [816] = 740, [817] = 741, - [818] = 742, - [819] = 743, - [820] = 748, - [821] = 749, - [822] = 719, - [823] = 748, - [824] = 749, - [825] = 741, - [826] = 773, - [827] = 696, - [828] = 736, - [829] = 737, - [830] = 698, - [831] = 738, - [832] = 739, - [833] = 734, - [834] = 509, - [835] = 741, - [836] = 742, - [837] = 743, - [838] = 502, - [839] = 839, - [840] = 773, - [841] = 697, - [842] = 774, - [843] = 748, - [844] = 749, - [845] = 759, - [846] = 846, - [847] = 695, - [848] = 735, - [849] = 494, - [850] = 695, - [851] = 698, - [852] = 852, - [853] = 774, - [854] = 854, + [818] = 748, + [819] = 751, + [820] = 752, + [821] = 757, + [822] = 739, + [823] = 743, + [824] = 744, + [825] = 745, + [826] = 746, + [827] = 740, + [828] = 741, + [829] = 748, + [830] = 751, + [831] = 778, + [832] = 778, + [833] = 748, + [834] = 701, + [835] = 774, + [836] = 774, + [837] = 778, + [838] = 515, + [839] = 747, + [840] = 700, + [841] = 841, + [842] = 614, + [843] = 702, + [844] = 751, + [845] = 752, + [846] = 702, + [847] = 701, + [848] = 703, + [849] = 617, + [850] = 494, + [851] = 524, + [852] = 703, + [853] = 700, + [854] = 774, [855] = 855, - [856] = 856, - [857] = 513, - [858] = 462, - [859] = 696, - [860] = 860, - [861] = 697, - [862] = 856, - [863] = 773, - [864] = 465, - [865] = 774, - [866] = 720, - [867] = 716, - [868] = 710, - [869] = 705, - [870] = 712, - [871] = 713, - [872] = 706, - [873] = 707, - [874] = 708, - [875] = 709, - [876] = 294, - [877] = 699, - [878] = 732, - [879] = 721, + [856] = 757, + [857] = 857, + [858] = 858, + [859] = 618, + [860] = 470, + [861] = 861, + [862] = 739, + [863] = 743, + [864] = 744, + [865] = 745, + [866] = 746, + [867] = 740, + [868] = 741, + [869] = 869, + [870] = 869, + [871] = 871, + [872] = 499, + [873] = 734, + [874] = 723, + [875] = 724, + [876] = 313, + [877] = 723, + [878] = 707, + [879] = 725, [880] = 726, [881] = 727, [882] = 728, [883] = 729, [884] = 730, [885] = 731, - [886] = 706, - [887] = 722, - [888] = 700, - [889] = 702, - [890] = 307, - [891] = 705, - [892] = 717, - [893] = 714, - [894] = 716, - [895] = 718, - [896] = 732, - [897] = 711, - [898] = 701, - [899] = 703, - [900] = 704, - [901] = 710, - [902] = 708, - [903] = 718, - [904] = 733, - [905] = 712, - [906] = 733, - [907] = 721, - [908] = 724, - [909] = 714, - [910] = 726, - [911] = 773, - [912] = 774, - [913] = 727, - [914] = 701, - [915] = 494, - [916] = 703, - [917] = 704, - [918] = 713, - [919] = 502, - [920] = 728, - [921] = 729, - [922] = 730, - [923] = 731, - [924] = 724, - [925] = 513, - [926] = 723, - [927] = 927, - [928] = 928, - [929] = 722, - [930] = 700, - [931] = 699, - [932] = 932, - [933] = 933, + [886] = 732, + [887] = 733, + [888] = 734, + [889] = 735, + [890] = 709, + [891] = 710, + [892] = 736, + [893] = 737, + [894] = 711, + [895] = 708, + [896] = 896, + [897] = 897, + [898] = 725, + [899] = 712, + [900] = 716, + [901] = 713, + [902] = 714, + [903] = 726, + [904] = 727, + [905] = 728, + [906] = 317, + [907] = 778, + [908] = 729, + [909] = 730, + [910] = 731, + [911] = 706, + [912] = 715, + [913] = 774, + [914] = 515, + [915] = 736, + [916] = 737, + [917] = 614, + [918] = 706, + [919] = 715, + [920] = 719, + [921] = 709, + [922] = 710, + [923] = 707, + [924] = 524, + [925] = 708, + [926] = 738, + [927] = 713, + [928] = 721, + [929] = 724, + [930] = 722, + [931] = 931, + [932] = 711, + [933] = 716, [934] = 934, [935] = 935, - [936] = 702, - [937] = 707, - [938] = 723, - [939] = 715, - [940] = 717, - [941] = 720, - [942] = 715, - [943] = 711, - [944] = 709, - [945] = 706, - [946] = 710, - [947] = 294, + [936] = 714, + [937] = 717, + [938] = 718, + [939] = 939, + [940] = 719, + [941] = 732, + [942] = 733, + [943] = 718, + [944] = 738, + [945] = 735, + [946] = 721, + [947] = 717, [948] = 722, - [949] = 699, - [950] = 702, - [951] = 307, - [952] = 715, - [953] = 724, - [954] = 717, - [955] = 714, - [956] = 716, - [957] = 718, - [958] = 720, - [959] = 732, - [960] = 711, - [961] = 701, - [962] = 703, - [963] = 723, - [964] = 964, - [965] = 704, - [966] = 707, - [967] = 721, - [968] = 708, - [969] = 705, - [970] = 726, - [971] = 727, - [972] = 839, - [973] = 852, - [974] = 728, - [975] = 709, - [976] = 729, - [977] = 733, - [978] = 730, - [979] = 979, - [980] = 980, - [981] = 731, + [949] = 720, + [950] = 720, + [951] = 712, + [952] = 722, + [953] = 708, + [954] = 709, + [955] = 710, + [956] = 711, + [957] = 712, + [958] = 713, + [959] = 317, + [960] = 715, + [961] = 716, + [962] = 717, + [963] = 718, + [964] = 719, + [965] = 738, + [966] = 721, + [967] = 723, + [968] = 724, + [969] = 313, + [970] = 725, + [971] = 726, + [972] = 727, + [973] = 728, + [974] = 729, + [975] = 730, + [976] = 731, + [977] = 732, + [978] = 733, + [979] = 734, + [980] = 735, + [981] = 981, [982] = 982, - [983] = 700, - [984] = 984, - [985] = 985, - [986] = 986, + [983] = 983, + [984] = 858, + [985] = 720, + [986] = 857, [987] = 987, - [988] = 988, - [989] = 989, - [990] = 989, + [988] = 706, + [989] = 707, + [990] = 714, [991] = 991, - [992] = 991, + [992] = 992, [993] = 993, [994] = 994, - [995] = 989, + [995] = 995, [996] = 996, - [997] = 991, - [998] = 998, - [999] = 999, + [997] = 997, + [998] = 997, + [999] = 996, [1000] = 1000, - [1001] = 1001, - [1002] = 991, - [1003] = 989, - [1004] = 1004, + [1001] = 996, + [1002] = 1002, + [1003] = 996, + [1004] = 997, [1005] = 1005, - [1006] = 991, - [1007] = 989, - [1008] = 1008, - [1009] = 991, + [1006] = 1006, + [1007] = 1007, + [1008] = 997, + [1009] = 1009, [1010] = 1010, - [1011] = 989, + [1011] = 1011, [1012] = 1012, [1013] = 1013, - [1014] = 1014, - [1015] = 1014, - [1016] = 1014, - [1017] = 1014, - [1018] = 1014, - [1019] = 1019, - [1020] = 1014, + [1014] = 997, + [1015] = 996, + [1016] = 997, + [1017] = 1017, + [1018] = 1018, + [1019] = 996, + [1020] = 1020, [1021] = 1021, [1022] = 1022, - [1023] = 1023, - [1024] = 1024, - [1025] = 1025, - [1026] = 1025, - [1027] = 1023, + [1023] = 1021, + [1024] = 1021, + [1025] = 1021, + [1026] = 1021, + [1027] = 1021, [1028] = 1028, - [1029] = 1028, + [1029] = 1029, [1030] = 1030, [1031] = 1031, - [1032] = 1032, + [1032] = 1031, [1033] = 1033, - [1034] = 1034, + [1034] = 1033, [1035] = 1035, - [1036] = 1036, + [1036] = 1035, [1037] = 1037, [1038] = 1038, [1039] = 1039, [1040] = 1040, [1041] = 1041, [1042] = 1042, - [1043] = 1033, - [1044] = 1035, - [1045] = 1037, - [1046] = 1034, - [1047] = 1033, - [1048] = 1036, - [1049] = 1049, - [1050] = 1035, - [1051] = 1037, + [1043] = 1043, + [1044] = 1044, + [1045] = 1045, + [1046] = 1046, + [1047] = 1041, + [1048] = 1048, + [1049] = 1044, + [1050] = 1040, + [1051] = 1046, [1052] = 1052, - [1053] = 1033, - [1054] = 1036, - [1055] = 1035, - [1056] = 1037, - [1057] = 1033, - [1058] = 1036, - [1059] = 1035, - [1060] = 1034, - [1061] = 1034, - [1062] = 1062, - [1063] = 1063, + [1053] = 1053, + [1054] = 1044, + [1055] = 1040, + [1056] = 1052, + [1057] = 1046, + [1058] = 1052, + [1059] = 1044, + [1060] = 1044, + [1061] = 1040, + [1062] = 1046, + [1063] = 1041, [1064] = 1064, - [1065] = 1065, - [1066] = 1066, - [1067] = 1067, - [1068] = 1063, - [1069] = 1065, + [1065] = 1046, + [1066] = 1052, + [1067] = 1041, + [1068] = 1068, + [1069] = 1069, [1070] = 1070, [1071] = 1071, [1072] = 1072, - [1073] = 1066, + [1073] = 1073, [1074] = 1070, - [1075] = 1067, - [1076] = 1067, + [1075] = 1075, + [1076] = 1072, [1077] = 1077, [1078] = 1078, - [1079] = 1066, - [1080] = 1067, + [1079] = 1079, + [1080] = 1080, [1081] = 1081, - [1082] = 1064, - [1083] = 1081, - [1084] = 1066, - [1085] = 1071, - [1086] = 1081, - [1087] = 1077, - [1088] = 1081, - [1089] = 1062, - [1090] = 1090, - [1091] = 1091, - [1092] = 1092, - [1093] = 1093, - [1094] = 1094, - [1095] = 1095, - [1096] = 1096, + [1082] = 1082, + [1083] = 1071, + [1084] = 1070, + [1085] = 1077, + [1086] = 1070, + [1087] = 1075, + [1088] = 1073, + [1089] = 1082, + [1090] = 1080, + [1091] = 1081, + [1092] = 1080, + [1093] = 1075, + [1094] = 1075, + [1095] = 1080, + [1096] = 1069, [1097] = 1097, [1098] = 1098, [1099] = 1099, [1100] = 1100, [1101] = 1101, - [1102] = 1071, - [1103] = 1064, - [1104] = 1062, - [1105] = 1063, - [1106] = 1065, - [1107] = 1070, - [1108] = 1071, - [1109] = 1071, + [1102] = 1102, + [1103] = 1103, + [1104] = 1104, + [1105] = 1105, + [1106] = 1106, + [1107] = 1107, + [1108] = 1108, + [1109] = 1098, [1110] = 1110, [1111] = 1111, - [1112] = 1096, + [1112] = 1071, [1113] = 1113, [1114] = 1114, - [1115] = 1115, + [1115] = 1073, [1116] = 1116, [1117] = 1117, - [1118] = 1113, + [1118] = 1077, [1119] = 1119, [1120] = 1120, - [1121] = 1063, + [1121] = 1072, [1122] = 1122, - [1123] = 1065, + [1123] = 1081, [1124] = 1124, [1125] = 1125, - [1126] = 1126, + [1126] = 1037, [1127] = 1127, [1128] = 1128, - [1129] = 1031, + [1129] = 1038, [1130] = 1130, - [1131] = 1131, + [1131] = 1037, [1132] = 1132, [1133] = 1133, [1134] = 1134, - [1135] = 1030, + [1135] = 1135, [1136] = 1136, [1137] = 1137, [1138] = 1138, - [1139] = 1139, + [1139] = 1098, [1140] = 1140, - [1141] = 1096, + [1141] = 1141, [1142] = 1142, [1143] = 1143, - [1144] = 1070, - [1145] = 1077, + [1144] = 1120, + [1145] = 1038, [1146] = 1146, - [1147] = 1147, - [1148] = 1093, - [1149] = 1077, - [1150] = 1064, - [1151] = 1062, - [1152] = 1063, - [1153] = 1065, - [1154] = 1154, - [1155] = 1155, - [1156] = 1064, - [1157] = 1070, - [1158] = 1031, - [1159] = 1159, + [1147] = 1069, + [1148] = 1148, + [1149] = 1149, + [1150] = 1150, + [1151] = 1151, + [1152] = 1081, + [1153] = 1081, + [1154] = 1077, + [1155] = 1073, + [1156] = 1069, + [1157] = 1071, + [1158] = 1158, + [1159] = 1098, [1160] = 1160, - [1161] = 1161, - [1162] = 1162, - [1163] = 1062, - [1164] = 1117, - [1165] = 1077, - [1166] = 1125, - [1167] = 1167, - [1168] = 1030, - [1169] = 1169, - [1170] = 1170, + [1161] = 1082, + [1162] = 1077, + [1163] = 1082, + [1164] = 1073, + [1165] = 1069, + [1166] = 1072, + [1167] = 1071, + [1168] = 1082, + [1169] = 1125, + [1170] = 1072, [1171] = 1171, - [1172] = 1172, + [1172] = 1146, [1173] = 1173, [1174] = 1174, - [1175] = 1175, - [1176] = 1031, + [1175] = 1107, + [1176] = 1176, [1177] = 1177, [1178] = 1178, [1179] = 1179, [1180] = 1180, - [1181] = 1173, - [1182] = 1182, + [1181] = 1181, + [1182] = 1077, [1183] = 1183, [1184] = 1184, [1185] = 1185, [1186] = 1186, - [1187] = 1171, - [1188] = 1077, - [1189] = 1183, - [1190] = 1170, - [1191] = 1125, - [1192] = 1064, - [1193] = 1062, - [1194] = 1063, - [1195] = 1065, - [1196] = 1196, - [1197] = 1197, - [1198] = 1170, - [1199] = 1117, + [1187] = 1187, + [1188] = 1082, + [1189] = 1073, + [1190] = 1069, + [1191] = 1191, + [1192] = 1192, + [1193] = 1193, + [1194] = 1184, + [1195] = 1195, + [1196] = 1186, + [1197] = 1072, + [1198] = 1037, + [1199] = 1199, [1200] = 1200, - [1201] = 1201, - [1202] = 1093, + [1201] = 1071, + [1202] = 1202, [1203] = 1203, [1204] = 1204, - [1205] = 1186, - [1206] = 1206, - [1207] = 1204, - [1208] = 1070, - [1209] = 1071, - [1210] = 1030, - [1211] = 1211, - [1212] = 1170, + [1205] = 1205, + [1206] = 1203, + [1207] = 1184, + [1208] = 1177, + [1209] = 1193, + [1210] = 1107, + [1211] = 1186, + [1212] = 1186, [1213] = 1213, - [1214] = 1214, - [1215] = 1215, - [1216] = 1216, - [1217] = 1217, - [1218] = 1218, - [1219] = 1216, - [1220] = 1220, - [1221] = 1221, - [1222] = 1221, + [1214] = 1081, + [1215] = 1195, + [1216] = 1183, + [1217] = 1202, + [1218] = 1204, + [1219] = 1120, + [1220] = 1125, + [1221] = 1199, + [1222] = 1222, [1223] = 1223, [1224] = 1224, [1225] = 1225, - [1226] = 1226, - [1227] = 1227, - [1228] = 1228, - [1229] = 1229, - [1230] = 1230, + [1226] = 1202, + [1227] = 1204, + [1228] = 1203, + [1229] = 1202, + [1230] = 1204, [1231] = 1231, - [1232] = 1215, - [1233] = 1233, - [1234] = 1032, + [1232] = 1203, + [1233] = 1038, + [1234] = 1234, [1235] = 1235, - [1236] = 1236, - [1237] = 1235, - [1238] = 1238, + [1236] = 1184, + [1237] = 1237, + [1238] = 1125, [1239] = 1239, - [1240] = 1236, - [1241] = 1233, - [1242] = 1242, + [1240] = 1240, + [1241] = 1241, + [1242] = 1039, [1243] = 1243, [1244] = 1244, [1245] = 1245, @@ -4307,75 +4334,75 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1247] = 1247, [1248] = 1248, [1249] = 1249, - [1250] = 1172, - [1251] = 1229, + [1250] = 1250, + [1251] = 1245, [1252] = 1252, [1253] = 1253, - [1254] = 1230, + [1254] = 1254, [1255] = 1255, [1256] = 1256, [1257] = 1257, - [1258] = 1183, + [1258] = 1258, [1259] = 1259, - [1260] = 1215, + [1260] = 1260, [1261] = 1261, - [1262] = 1262, + [1262] = 1256, [1263] = 1263, [1264] = 1264, - [1265] = 1265, + [1265] = 1253, [1266] = 1266, [1267] = 1267, [1268] = 1268, [1269] = 1269, - [1270] = 1270, - [1271] = 1271, + [1270] = 1249, + [1271] = 1231, [1272] = 1272, - [1273] = 1267, - [1274] = 1274, + [1273] = 1272, + [1274] = 1243, [1275] = 1275, [1276] = 1276, - [1277] = 1277, - [1278] = 1229, - [1279] = 1279, - [1280] = 1221, - [1281] = 1256, - [1282] = 1214, + [1277] = 1276, + [1278] = 1278, + [1279] = 1250, + [1280] = 1280, + [1281] = 1281, + [1282] = 1282, [1283] = 1283, [1284] = 1284, [1285] = 1285, - [1286] = 1286, - [1287] = 1265, - [1288] = 1288, - [1289] = 1049, + [1286] = 1272, + [1287] = 1287, + [1288] = 1243, + [1289] = 1289, [1290] = 1290, [1291] = 1291, - [1292] = 1292, - [1293] = 1293, + [1292] = 1224, + [1293] = 1053, [1294] = 1294, [1295] = 1295, - [1296] = 1296, + [1296] = 1289, [1297] = 1297, [1298] = 1298, - [1299] = 1299, + [1299] = 1249, [1300] = 1300, - [1301] = 1301, + [1301] = 1291, [1302] = 1302, [1303] = 1303, [1304] = 1304, - [1305] = 1298, + [1305] = 1305, [1306] = 1306, - [1307] = 1297, + [1307] = 1307, [1308] = 1308, [1309] = 1309, - [1310] = 1302, + [1310] = 1310, [1311] = 1311, [1312] = 1312, [1313] = 1313, - [1314] = 1314, + [1314] = 1285, [1315] = 1315, - [1316] = 1316, - [1317] = 1039, - [1318] = 1040, + [1316] = 1199, + [1317] = 1317, + [1318] = 1318, [1319] = 1319, [1320] = 1320, [1321] = 1321, @@ -4385,94 +4412,94 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1325] = 1325, [1326] = 1326, [1327] = 1327, - [1328] = 1271, - [1329] = 1275, - [1330] = 1290, + [1328] = 1328, + [1329] = 1329, + [1330] = 1330, [1331] = 1331, [1332] = 1332, - [1333] = 1303, + [1333] = 1333, [1334] = 1334, - [1335] = 1297, + [1335] = 1335, [1336] = 1336, - [1337] = 1337, - [1338] = 1338, - [1339] = 1297, - [1340] = 1340, + [1337] = 1300, + [1338] = 1304, + [1339] = 1339, + [1340] = 1324, [1341] = 1341, [1342] = 1342, - [1343] = 1303, + [1343] = 1343, [1344] = 1344, - [1345] = 1297, - [1346] = 1322, - [1347] = 1334, - [1348] = 1332, + [1345] = 1345, + [1346] = 1345, + [1347] = 1347, + [1348] = 1348, [1349] = 1349, - [1350] = 1295, - [1351] = 1351, - [1352] = 1349, - [1353] = 1353, + [1350] = 1350, + [1351] = 1328, + [1352] = 1352, + [1353] = 1347, [1354] = 1354, [1355] = 1355, - [1356] = 1356, + [1356] = 1330, [1357] = 1357, - [1358] = 1267, + [1358] = 1358, [1359] = 1359, [1360] = 1360, - [1361] = 1351, - [1362] = 1362, - [1363] = 1304, + [1361] = 1347, + [1362] = 1290, + [1363] = 1363, [1364] = 1364, - [1365] = 1365, - [1366] = 1297, - [1367] = 1255, + [1365] = 1347, + [1366] = 1366, + [1367] = 1347, [1368] = 1368, - [1369] = 1301, - [1370] = 1323, - [1371] = 1371, + [1369] = 1068, + [1370] = 1370, + [1371] = 1359, [1372] = 1372, - [1373] = 1332, + [1373] = 1043, [1374] = 1374, - [1375] = 1375, - [1376] = 1376, - [1377] = 1377, - [1378] = 1378, + [1375] = 1334, + [1376] = 1350, + [1377] = 1363, + [1378] = 1331, [1379] = 1379, - [1380] = 1223, + [1380] = 1380, [1381] = 1381, - [1382] = 1306, + [1382] = 1382, [1383] = 1383, - [1384] = 1309, + [1384] = 1302, [1385] = 1385, - [1386] = 1386, - [1387] = 1387, + [1386] = 1370, + [1387] = 1347, [1388] = 1388, [1389] = 1389, [1390] = 1390, [1391] = 1391, [1392] = 1392, - [1393] = 1393, + [1393] = 1291, [1394] = 1394, - [1395] = 1368, + [1395] = 1395, [1396] = 1396, - [1397] = 1387, - [1398] = 1388, - [1399] = 1399, - [1400] = 1383, + [1397] = 1397, + [1398] = 1396, + [1399] = 1328, + [1400] = 1400, [1401] = 1401, - [1402] = 1402, - [1403] = 1403, - [1404] = 697, + [1402] = 1345, + [1403] = 1397, + [1404] = 1404, [1405] = 1405, [1406] = 1406, - [1407] = 1377, - [1408] = 1389, + [1407] = 1407, + [1408] = 1408, [1409] = 1409, - [1410] = 1403, - [1411] = 1387, - [1412] = 1388, + [1410] = 1410, + [1411] = 1411, + [1412] = 1412, [1413] = 1413, - [1414] = 1377, - [1415] = 1415, + [1414] = 1335, + [1415] = 1336, [1416] = 1416, [1417] = 1417, [1418] = 1418, @@ -4480,306 +4507,338 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1420] = 1420, [1421] = 1421, [1422] = 1422, - [1423] = 1383, + [1423] = 1423, [1424] = 1424, - [1425] = 1403, - [1426] = 1389, - [1427] = 1409, - [1428] = 1385, - [1429] = 1387, - [1430] = 1388, - [1431] = 1431, - [1432] = 1377, - [1433] = 1409, + [1425] = 1425, + [1426] = 1426, + [1427] = 1427, + [1428] = 1428, + [1429] = 1429, + [1430] = 1430, + [1431] = 1281, + [1432] = 1432, + [1433] = 1433, [1434] = 1434, - [1435] = 1415, - [1436] = 1417, - [1437] = 1418, - [1438] = 1438, + [1435] = 1435, + [1436] = 1436, + [1437] = 1437, + [1438] = 1329, [1439] = 1439, - [1440] = 1440, + [1440] = 1339, [1441] = 1441, [1442] = 1442, [1443] = 1443, [1444] = 1444, - [1445] = 1445, + [1445] = 1406, [1446] = 1446, - [1447] = 1447, - [1448] = 1415, + [1447] = 1432, + [1448] = 1448, [1449] = 1449, - [1450] = 1417, - [1451] = 1418, + [1450] = 1449, + [1451] = 1451, [1452] = 1452, [1453] = 1453, [1454] = 1454, - [1455] = 1253, - [1456] = 1390, - [1457] = 1457, - [1458] = 1419, - [1459] = 1459, + [1455] = 1455, + [1456] = 1412, + [1457] = 1413, + [1458] = 1434, + [1459] = 1441, [1460] = 1460, - [1461] = 1461, - [1462] = 1415, - [1463] = 1308, - [1464] = 1464, + [1461] = 1432, + [1462] = 1462, + [1463] = 1259, + [1464] = 1432, [1465] = 1465, - [1466] = 1466, - [1467] = 1467, - [1468] = 1468, - [1469] = 1469, - [1470] = 695, - [1471] = 1376, - [1472] = 1472, - [1473] = 1473, + [1466] = 1449, + [1467] = 1327, + [1468] = 1452, + [1469] = 1453, + [1470] = 1454, + [1471] = 1471, + [1472] = 1412, + [1473] = 1413, [1474] = 1474, - [1475] = 1475, - [1476] = 1476, + [1475] = 1434, + [1476] = 1441, [1477] = 1477, [1478] = 1478, - [1479] = 1342, + [1479] = 1449, [1480] = 1480, - [1481] = 1417, - [1482] = 1218, - [1483] = 1418, + [1481] = 1481, + [1482] = 1452, + [1483] = 1481, [1484] = 1484, - [1485] = 1389, - [1486] = 1486, - [1487] = 1353, - [1488] = 1359, - [1489] = 1383, - [1490] = 1403, - [1491] = 1409, + [1485] = 702, + [1486] = 1452, + [1487] = 1487, + [1488] = 1488, + [1489] = 1489, + [1490] = 1453, + [1491] = 1491, [1492] = 1492, - [1493] = 1453, - [1494] = 1457, - [1495] = 1495, - [1496] = 1496, - [1497] = 1497, + [1493] = 1493, + [1494] = 1494, + [1495] = 1407, + [1496] = 1452, + [1497] = 1453, [1498] = 1498, - [1499] = 1460, + [1499] = 1499, [1500] = 1500, - [1501] = 1501, - [1502] = 1217, - [1503] = 1503, - [1504] = 1496, - [1505] = 1473, - [1506] = 1443, + [1501] = 1454, + [1502] = 1435, + [1503] = 1465, + [1504] = 1504, + [1505] = 1505, + [1506] = 1506, [1507] = 1507, - [1508] = 1508, - [1509] = 1509, + [1508] = 1260, + [1509] = 703, [1510] = 1510, [1511] = 1511, [1512] = 1512, [1513] = 1513, [1514] = 1514, - [1515] = 313, - [1516] = 1516, - [1517] = 1517, - [1518] = 1518, - [1519] = 1519, - [1520] = 1442, - [1521] = 320, + [1515] = 1515, + [1516] = 1383, + [1517] = 1275, + [1518] = 1454, + [1519] = 1487, + [1520] = 1491, + [1521] = 1412, [1522] = 1522, - [1523] = 1523, + [1523] = 1413, [1524] = 1524, - [1525] = 1525, - [1526] = 1526, - [1527] = 1527, + [1525] = 1434, + [1526] = 1441, + [1527] = 1492, [1528] = 1528, - [1529] = 1529, - [1530] = 1530, - [1531] = 1531, + [1529] = 1358, + [1530] = 1515, + [1531] = 1405, [1532] = 1532, - [1533] = 1533, + [1533] = 333, [1534] = 1534, [1535] = 1535, - [1536] = 314, - [1537] = 1196, - [1538] = 317, + [1536] = 1536, + [1537] = 1537, + [1538] = 1538, [1539] = 1539, - [1540] = 1486, + [1540] = 1540, [1541] = 1541, - [1542] = 1542, - [1543] = 1511, + [1542] = 1442, + [1543] = 1543, [1544] = 1544, - [1545] = 1421, - [1546] = 1513, + [1545] = 1545, + [1546] = 1546, [1547] = 1547, - [1548] = 1548, - [1549] = 1510, + [1548] = 1538, + [1549] = 1549, [1550] = 1550, [1551] = 1551, - [1552] = 1548, + [1552] = 1552, [1553] = 1553, - [1554] = 1541, + [1554] = 1554, [1555] = 1555, [1556] = 1556, [1557] = 1557, [1558] = 1558, [1559] = 1559, - [1560] = 1560, + [1560] = 1546, [1561] = 1561, [1562] = 1562, [1563] = 1563, - [1564] = 1564, - [1565] = 1550, + [1564] = 1551, + [1565] = 1565, [1566] = 1566, - [1567] = 1510, + [1567] = 1567, [1568] = 1568, - [1569] = 1569, + [1569] = 1237, [1570] = 1570, [1571] = 1571, [1572] = 1572, [1573] = 1573, [1574] = 1574, [1575] = 1575, - [1576] = 1557, + [1576] = 1544, [1577] = 1577, - [1578] = 1512, + [1578] = 1578, [1579] = 1579, - [1580] = 334, + [1580] = 1580, [1581] = 1581, - [1582] = 1539, - [1583] = 1583, + [1582] = 318, + [1583] = 311, [1584] = 1584, [1585] = 1585, - [1586] = 1584, + [1586] = 1586, [1587] = 1587, - [1588] = 1588, + [1588] = 1573, [1589] = 1589, - [1590] = 1590, + [1590] = 1573, [1591] = 1591, [1592] = 1592, [1593] = 1593, - [1594] = 1594, + [1594] = 1547, [1595] = 1595, [1596] = 1596, - [1597] = 1597, - [1598] = 1598, - [1599] = 1599, - [1600] = 1600, + [1597] = 1572, + [1598] = 312, + [1599] = 1574, + [1600] = 1428, [1601] = 1601, - [1602] = 1600, + [1602] = 1602, [1603] = 1603, - [1604] = 1593, + [1604] = 1604, [1605] = 1605, - [1606] = 1588, - [1607] = 1589, + [1606] = 1507, + [1607] = 326, [1608] = 1608, [1609] = 1609, [1610] = 1610, [1611] = 1611, - [1612] = 1612, - [1613] = 1592, + [1612] = 1541, + [1613] = 1613, [1614] = 1614, - [1615] = 1591, + [1615] = 1615, [1616] = 1616, - [1617] = 1617, - [1618] = 1617, + [1617] = 1616, + [1618] = 1618, [1619] = 1619, [1620] = 1620, [1621] = 1621, [1622] = 1622, [1623] = 1623, - [1624] = 1614, - [1625] = 1610, - [1626] = 1591, + [1624] = 1624, + [1625] = 1625, + [1626] = 1626, [1627] = 1627, - [1628] = 1628, + [1628] = 1618, [1629] = 1629, [1630] = 1630, [1631] = 1631, - [1632] = 1605, - [1633] = 1594, - [1634] = 1612, - [1635] = 1584, + [1632] = 1632, + [1633] = 1633, + [1634] = 1634, + [1635] = 1635, [1636] = 1636, - [1637] = 1603, + [1637] = 1635, [1638] = 1638, - [1639] = 1583, - [1640] = 1640, + [1639] = 1639, + [1640] = 1615, [1641] = 1641, - [1642] = 1616, + [1642] = 1642, [1643] = 1643, - [1644] = 1644, - [1645] = 1627, - [1646] = 1609, + [1644] = 1630, + [1645] = 1636, + [1646] = 1646, [1647] = 1647, [1648] = 1648, - [1649] = 1627, - [1650] = 1631, - [1651] = 1605, - [1652] = 1587, + [1649] = 1643, + [1650] = 1650, + [1651] = 1651, + [1652] = 1652, [1653] = 1653, [1654] = 1654, - [1655] = 1655, - [1656] = 1594, + [1655] = 1654, + [1656] = 1621, [1657] = 1657, - [1658] = 1658, + [1658] = 1657, [1659] = 1659, - [1660] = 1653, - [1661] = 1661, + [1660] = 1614, + [1661] = 1647, [1662] = 1662, - [1663] = 1663, + [1663] = 1634, [1664] = 1664, - [1665] = 1596, - [1666] = 1608, - [1667] = 1667, - [1668] = 1593, - [1669] = 1653, - [1670] = 1597, - [1671] = 1612, - [1672] = 1672, - [1673] = 1593, - [1674] = 1612, - [1675] = 1591, - [1676] = 1590, - [1677] = 1614, - [1678] = 1596, - [1679] = 1594, - [1680] = 1680, - [1681] = 1636, + [1665] = 1665, + [1666] = 1624, + [1667] = 1639, + [1668] = 1631, + [1669] = 1657, + [1670] = 1670, + [1671] = 1671, + [1672] = 1619, + [1673] = 1618, + [1674] = 1674, + [1675] = 1675, + [1676] = 1676, + [1677] = 1651, + [1678] = 1678, + [1679] = 1679, + [1680] = 1665, + [1681] = 1631, [1682] = 1682, - [1683] = 1596, - [1684] = 1684, - [1685] = 1685, - [1686] = 1592, - [1687] = 1600, - [1688] = 1688, - [1689] = 1621, - [1690] = 1593, - [1691] = 1629, - [1692] = 1641, - [1693] = 1653, - [1694] = 1584, - [1695] = 1605, + [1683] = 1683, + [1684] = 1615, + [1685] = 1664, + [1686] = 1654, + [1687] = 1629, + [1688] = 1624, + [1689] = 1689, + [1690] = 1690, + [1691] = 1639, + [1692] = 1657, + [1693] = 1632, + [1694] = 1614, + [1695] = 1676, [1696] = 1696, - [1697] = 1622, - [1698] = 1667, - [1699] = 1644, - [1700] = 1612, - [1701] = 1701, - [1702] = 1702, - [1703] = 1703, - [1704] = 1611, - [1705] = 1600, - [1706] = 1592, + [1697] = 1639, + [1698] = 1619, + [1699] = 1699, + [1700] = 1664, + [1701] = 1626, + [1702] = 1619, + [1703] = 1631, + [1704] = 1704, + [1705] = 1705, + [1706] = 1706, [1707] = 1707, - [1708] = 1614, + [1708] = 1708, [1709] = 1709, - [1710] = 1601, - [1711] = 1593, - [1712] = 1688, - [1713] = 1619, - [1714] = 1599, - [1715] = 1627, - [1716] = 1661, - [1717] = 1685, - [1718] = 1631, - [1719] = 1672, - [1720] = 1612, - [1721] = 1631, - [1722] = 1722, + [1710] = 1619, + [1711] = 1618, + [1712] = 1712, + [1713] = 1675, + [1714] = 1665, + [1715] = 1648, + [1716] = 1613, + [1717] = 1676, + [1718] = 1718, + [1719] = 1622, + [1720] = 1683, + [1721] = 1654, + [1722] = 1675, + [1723] = 1659, + [1724] = 1665, + [1725] = 1725, + [1726] = 1726, + [1727] = 1624, + [1728] = 1676, + [1729] = 1639, + [1730] = 1619, + [1731] = 1731, + [1732] = 1639, + [1733] = 1664, + [1734] = 1641, + [1735] = 1614, + [1736] = 1736, + [1737] = 1615, + [1738] = 1738, + [1739] = 1736, + [1740] = 1740, + [1741] = 1646, + [1742] = 1742, + [1743] = 1743, + [1744] = 1744, + [1745] = 1699, + [1746] = 1705, + [1747] = 1642, + [1748] = 1748, + [1749] = 1740, + [1750] = 1748, + [1751] = 1718, + [1752] = 1752, + [1753] = 1725, + [1754] = 1675, }; static const TSCharacterRange sym_identifier_character_set_1[] = { @@ -6043,79 +6102,80 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { END_STATE(); case 46: if (lookahead == 'm') ADVANCE(82); + if (lookahead == 'z') ADVANCE(83); END_STATE(); case 47: - if (lookahead == 't') ADVANCE(83); + if (lookahead == 't') ADVANCE(84); END_STATE(); case 48: - if (lookahead == 'n') ADVANCE(84); - if (lookahead == 't') ADVANCE(85); + if (lookahead == 'n') ADVANCE(85); + if (lookahead == 't') ADVANCE(86); END_STATE(); case 49: ACCEPT_TOKEN(anon_sym_or); END_STATE(); case 50: - if (lookahead == 's') ADVANCE(86); + if (lookahead == 's') ADVANCE(87); END_STATE(); case 51: - if (lookahead == 'i') ADVANCE(87); + if (lookahead == 'i') ADVANCE(88); END_STATE(); case 52: - if (lookahead == 'i') ADVANCE(88); + if (lookahead == 'i') ADVANCE(89); END_STATE(); case 53: - if (lookahead == 't') ADVANCE(89); + if (lookahead == 't') ADVANCE(90); END_STATE(); case 54: - if (lookahead == 'y') ADVANCE(90); + if (lookahead == 'y') ADVANCE(91); END_STATE(); case 55: - if (lookahead == 'p') ADVANCE(91); + if (lookahead == 'p') ADVANCE(92); END_STATE(); case 56: - if (lookahead == 'i') ADVANCE(92); + if (lookahead == 'i') ADVANCE(93); END_STATE(); case 57: - if (lookahead == 't') ADVANCE(93); + if (lookahead == 't') ADVANCE(94); END_STATE(); case 58: - if (lookahead == 'e') ADVANCE(94); + if (lookahead == 'e') ADVANCE(95); END_STATE(); case 59: - if (lookahead == 's') ADVANCE(95); + if (lookahead == 's') ADVANCE(96); END_STATE(); case 60: - if (lookahead == 'e') ADVANCE(96); + if (lookahead == 'e') ADVANCE(97); END_STATE(); case 61: - if (lookahead == 'e') ADVANCE(97); + if (lookahead == 'e') ADVANCE(98); END_STATE(); case 62: - if (lookahead == 'u') ADVANCE(98); + if (lookahead == 'u') ADVANCE(99); END_STATE(); case 63: ACCEPT_TOKEN(anon_sym_and); END_STATE(); case 64: - if (lookahead == 'e') ADVANCE(99); + if (lookahead == 'e') ADVANCE(100); END_STATE(); case 65: - if (lookahead == 'n') ADVANCE(100); + if (lookahead == 'n') ADVANCE(101); END_STATE(); case 66: - if (lookahead == 'i') ADVANCE(101); + if (lookahead == 'i') ADVANCE(102); END_STATE(); case 67: - if (lookahead == 'a') ADVANCE(102); + if (lookahead == 'a') ADVANCE(103); END_STATE(); case 68: - if (lookahead == 'e') ADVANCE(103); + if (lookahead == 'e') ADVANCE(104); END_STATE(); case 69: - if (lookahead == 's') ADVANCE(104); + if (lookahead == 's') ADVANCE(105); END_STATE(); case 70: - if (lookahead == 't') ADVANCE(105); + if (lookahead == 't') ADVANCE(106); END_STATE(); case 71: ACCEPT_TOKEN(anon_sym_def); @@ -6124,276 +6184,282 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { ACCEPT_TOKEN(anon_sym_del); END_STATE(); case 73: - if (lookahead == 'f') ADVANCE(106); + if (lookahead == 'f') ADVANCE(107); END_STATE(); case 74: - if (lookahead == 'e') ADVANCE(107); + if (lookahead == 'e') ADVANCE(108); END_STATE(); case 75: - if (lookahead == 'e') ADVANCE(108); + if (lookahead == 'e') ADVANCE(109); END_STATE(); case 76: - if (lookahead == 'c') ADVANCE(109); + if (lookahead == 'c') ADVANCE(110); END_STATE(); case 77: - if (lookahead == 'a') ADVANCE(110); + if (lookahead == 'a') ADVANCE(111); END_STATE(); case 78: ACCEPT_TOKEN(anon_sym_for); END_STATE(); case 79: - if (lookahead == 'm') ADVANCE(111); + if (lookahead == 'm') ADVANCE(112); END_STATE(); case 80: - if (lookahead == 'b') ADVANCE(112); + if (lookahead == 'b') ADVANCE(113); END_STATE(); case 81: - if (lookahead == 'o') ADVANCE(113); + if (lookahead == 'o') ADVANCE(114); END_STATE(); case 82: - if (lookahead == 'b') ADVANCE(114); + if (lookahead == 'b') ADVANCE(115); END_STATE(); case 83: - if (lookahead == 'c') ADVANCE(115); + if (lookahead == 'y') ADVANCE(116); END_STATE(); case 84: - if (lookahead == 'l') ADVANCE(116); + if (lookahead == 'c') ADVANCE(117); END_STATE(); case 85: - ACCEPT_TOKEN(anon_sym_not); + if (lookahead == 'l') ADVANCE(118); END_STATE(); case 86: - if (lookahead == 's') ADVANCE(117); + ACCEPT_TOKEN(anon_sym_not); END_STATE(); case 87: - if (lookahead == 'n') ADVANCE(118); + if (lookahead == 's') ADVANCE(119); END_STATE(); case 88: - if (lookahead == 's') ADVANCE(119); + if (lookahead == 'n') ADVANCE(120); END_STATE(); case 89: - if (lookahead == 'u') ADVANCE(120); + if (lookahead == 's') ADVANCE(121); END_STATE(); case 90: - ACCEPT_TOKEN(anon_sym_try); + if (lookahead == 'u') ADVANCE(122); END_STATE(); case 91: - if (lookahead == 'e') ADVANCE(121); + ACCEPT_TOKEN(anon_sym_try); END_STATE(); case 92: - if (lookahead == 'l') ADVANCE(122); + if (lookahead == 'e') ADVANCE(123); END_STATE(); case 93: - if (lookahead == 'h') ADVANCE(123); + if (lookahead == 'l') ADVANCE(124); END_STATE(); case 94: - if (lookahead == 'l') ADVANCE(124); + if (lookahead == 'h') ADVANCE(125); END_STATE(); case 95: - if (lookahead == 'e') ADVANCE(125); + if (lookahead == 'l') ADVANCE(126); END_STATE(); case 96: - ACCEPT_TOKEN(sym_none); + if (lookahead == 'e') ADVANCE(127); END_STATE(); case 97: - ACCEPT_TOKEN(sym_true); + ACCEPT_TOKEN(sym_none); END_STATE(); case 98: - if (lookahead == 't') ADVANCE(126); + ACCEPT_TOKEN(sym_true); END_STATE(); case 99: - if (lookahead == 'r') ADVANCE(127); + if (lookahead == 't') ADVANCE(128); END_STATE(); case 100: - if (lookahead == 'c') ADVANCE(128); + if (lookahead == 'r') ADVANCE(129); END_STATE(); case 101: - if (lookahead == 't') ADVANCE(129); + if (lookahead == 'c') ADVANCE(130); END_STATE(); case 102: - if (lookahead == 'k') ADVANCE(130); + if (lookahead == 't') ADVANCE(131); END_STATE(); case 103: - ACCEPT_TOKEN(anon_sym_case); + if (lookahead == 'k') ADVANCE(132); END_STATE(); case 104: - if (lookahead == 's') ADVANCE(131); + ACCEPT_TOKEN(anon_sym_case); END_STATE(); case 105: - if (lookahead == 'i') ADVANCE(132); + if (lookahead == 's') ADVANCE(133); END_STATE(); case 106: - ACCEPT_TOKEN(anon_sym_elif); + if (lookahead == 'i') ADVANCE(134); END_STATE(); case 107: - ACCEPT_TOKEN(anon_sym_else); + ACCEPT_TOKEN(anon_sym_elif); END_STATE(); case 108: - if (lookahead == 'p') ADVANCE(133); + ACCEPT_TOKEN(anon_sym_else); END_STATE(); case 109: - ACCEPT_TOKEN(anon_sym_exec); + if (lookahead == 'p') ADVANCE(135); END_STATE(); case 110: - if (lookahead == 'l') ADVANCE(134); + ACCEPT_TOKEN(anon_sym_exec); END_STATE(); case 111: - ACCEPT_TOKEN(anon_sym_from); + if (lookahead == 'l') ADVANCE(136); END_STATE(); case 112: - if (lookahead == 'a') ADVANCE(135); + ACCEPT_TOKEN(anon_sym_from); END_STATE(); case 113: - if (lookahead == 'r') ADVANCE(136); + if (lookahead == 'a') ADVANCE(137); END_STATE(); case 114: - if (lookahead == 'd') ADVANCE(137); + if (lookahead == 'r') ADVANCE(138); END_STATE(); case 115: - if (lookahead == 'h') ADVANCE(138); + if (lookahead == 'd') ADVANCE(139); END_STATE(); case 116: - if (lookahead == 'o') ADVANCE(139); + ACCEPT_TOKEN(anon_sym_lazy); END_STATE(); case 117: - ACCEPT_TOKEN(anon_sym_pass); + if (lookahead == 'h') ADVANCE(140); END_STATE(); case 118: - if (lookahead == 't') ADVANCE(140); + if (lookahead == 'o') ADVANCE(141); END_STATE(); case 119: - if (lookahead == 'e') ADVANCE(141); + ACCEPT_TOKEN(anon_sym_pass); END_STATE(); case 120: - if (lookahead == 'r') ADVANCE(142); + if (lookahead == 't') ADVANCE(142); END_STATE(); case 121: - ACCEPT_TOKEN(anon_sym_type); + if (lookahead == 'e') ADVANCE(143); END_STATE(); case 122: - if (lookahead == 'e') ADVANCE(143); + if (lookahead == 'r') ADVANCE(144); END_STATE(); case 123: - ACCEPT_TOKEN(anon_sym_with); + ACCEPT_TOKEN(anon_sym_type); END_STATE(); case 124: - if (lookahead == 'd') ADVANCE(144); + if (lookahead == 'e') ADVANCE(145); END_STATE(); case 125: - ACCEPT_TOKEN(sym_false); + ACCEPT_TOKEN(anon_sym_with); END_STATE(); case 126: - if (lookahead == 'u') ADVANCE(145); + if (lookahead == 'd') ADVANCE(146); END_STATE(); case 127: - if (lookahead == 't') ADVANCE(146); + ACCEPT_TOKEN(sym_false); END_STATE(); case 128: - ACCEPT_TOKEN(anon_sym_async); + if (lookahead == 'u') ADVANCE(147); END_STATE(); case 129: - ACCEPT_TOKEN(anon_sym_await); + if (lookahead == 't') ADVANCE(148); END_STATE(); case 130: - ACCEPT_TOKEN(anon_sym_break); + ACCEPT_TOKEN(anon_sym_async); END_STATE(); case 131: - ACCEPT_TOKEN(anon_sym_class); + ACCEPT_TOKEN(anon_sym_await); END_STATE(); case 132: - if (lookahead == 'n') ADVANCE(147); + ACCEPT_TOKEN(anon_sym_break); END_STATE(); case 133: - if (lookahead == 't') ADVANCE(148); + ACCEPT_TOKEN(anon_sym_class); END_STATE(); case 134: - if (lookahead == 'l') ADVANCE(149); + if (lookahead == 'n') ADVANCE(149); END_STATE(); case 135: - if (lookahead == 'l') ADVANCE(150); + if (lookahead == 't') ADVANCE(150); END_STATE(); case 136: - if (lookahead == 't') ADVANCE(151); + if (lookahead == 'l') ADVANCE(151); END_STATE(); case 137: - if (lookahead == 'a') ADVANCE(152); + if (lookahead == 'l') ADVANCE(152); END_STATE(); case 138: - ACCEPT_TOKEN(anon_sym_match); + if (lookahead == 't') ADVANCE(153); END_STATE(); case 139: - if (lookahead == 'c') ADVANCE(153); + if (lookahead == 'a') ADVANCE(154); END_STATE(); case 140: - ACCEPT_TOKEN(anon_sym_print); + ACCEPT_TOKEN(anon_sym_match); END_STATE(); case 141: - ACCEPT_TOKEN(anon_sym_raise); + if (lookahead == 'c') ADVANCE(155); END_STATE(); case 142: - if (lookahead == 'n') ADVANCE(154); + ACCEPT_TOKEN(anon_sym_print); END_STATE(); case 143: - ACCEPT_TOKEN(anon_sym_while); + ACCEPT_TOKEN(anon_sym_raise); END_STATE(); case 144: - ACCEPT_TOKEN(anon_sym_yield); + if (lookahead == 'n') ADVANCE(156); END_STATE(); case 145: - if (lookahead == 'r') ADVANCE(155); + ACCEPT_TOKEN(anon_sym_while); END_STATE(); case 146: - ACCEPT_TOKEN(anon_sym_assert); + ACCEPT_TOKEN(anon_sym_yield); END_STATE(); case 147: - if (lookahead == 'u') ADVANCE(156); + if (lookahead == 'r') ADVANCE(157); END_STATE(); case 148: - ACCEPT_TOKEN(anon_sym_except); + ACCEPT_TOKEN(anon_sym_assert); END_STATE(); case 149: - if (lookahead == 'y') ADVANCE(157); + if (lookahead == 'u') ADVANCE(158); END_STATE(); case 150: - ACCEPT_TOKEN(anon_sym_global); + ACCEPT_TOKEN(anon_sym_except); END_STATE(); case 151: - ACCEPT_TOKEN(anon_sym_import); + if (lookahead == 'y') ADVANCE(159); END_STATE(); case 152: - ACCEPT_TOKEN(anon_sym_lambda); + ACCEPT_TOKEN(anon_sym_global); END_STATE(); case 153: - if (lookahead == 'a') ADVANCE(158); + ACCEPT_TOKEN(anon_sym_import); END_STATE(); case 154: - ACCEPT_TOKEN(anon_sym_return); + ACCEPT_TOKEN(anon_sym_lambda); END_STATE(); case 155: - if (lookahead == 'e') ADVANCE(159); + if (lookahead == 'a') ADVANCE(160); END_STATE(); case 156: - if (lookahead == 'e') ADVANCE(160); + ACCEPT_TOKEN(anon_sym_return); END_STATE(); case 157: - ACCEPT_TOKEN(anon_sym_finally); + if (lookahead == 'e') ADVANCE(161); END_STATE(); case 158: - if (lookahead == 'l') ADVANCE(161); + if (lookahead == 'e') ADVANCE(162); END_STATE(); case 159: - if (lookahead == '_') ADVANCE(162); + ACCEPT_TOKEN(anon_sym_finally); END_STATE(); case 160: - ACCEPT_TOKEN(anon_sym_continue); + if (lookahead == 'l') ADVANCE(163); END_STATE(); case 161: - ACCEPT_TOKEN(anon_sym_nonlocal); + if (lookahead == '_') ADVANCE(164); END_STATE(); case 162: - if (lookahead == '_') ADVANCE(163); + ACCEPT_TOKEN(anon_sym_continue); END_STATE(); case 163: + ACCEPT_TOKEN(anon_sym_nonlocal); + END_STATE(); + case 164: + if (lookahead == '_') ADVANCE(165); + END_STATE(); + case 165: ACCEPT_TOKEN(anon_sym___future__); END_STATE(); default: @@ -6462,15 +6528,15 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [57] = {.lex_state = 51, .external_lex_state = 3}, [58] = {.lex_state = 51, .external_lex_state = 3}, [59] = {.lex_state = 51, .external_lex_state = 3}, - [60] = {.lex_state = 51, .external_lex_state = 2}, + [60] = {.lex_state = 51, .external_lex_state = 3}, [61] = {.lex_state = 51, .external_lex_state = 3}, - [62] = {.lex_state = 51, .external_lex_state = 2}, + [62] = {.lex_state = 51, .external_lex_state = 3}, [63] = {.lex_state = 51, .external_lex_state = 3}, - [64] = {.lex_state = 51, .external_lex_state = 3}, - [65] = {.lex_state = 51, .external_lex_state = 3}, + [64] = {.lex_state = 51, .external_lex_state = 2}, + [65] = {.lex_state = 51, .external_lex_state = 2}, [66] = {.lex_state = 51, .external_lex_state = 4}, [67] = {.lex_state = 51, .external_lex_state = 4}, - [68] = {.lex_state = 51, .external_lex_state = 4}, + [68] = {.lex_state = 51, .external_lex_state = 5}, [69] = {.lex_state = 51, .external_lex_state = 5}, [70] = {.lex_state = 51, .external_lex_state = 5}, [71] = {.lex_state = 51, .external_lex_state = 5}, @@ -6480,7 +6546,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [75] = {.lex_state = 51, .external_lex_state = 5}, [76] = {.lex_state = 51, .external_lex_state = 5}, [77] = {.lex_state = 51, .external_lex_state = 5}, - [78] = {.lex_state = 51, .external_lex_state = 5}, + [78] = {.lex_state = 51, .external_lex_state = 4}, [79] = {.lex_state = 51, .external_lex_state = 5}, [80] = {.lex_state = 51, .external_lex_state = 5}, [81] = {.lex_state = 51, .external_lex_state = 5}, @@ -6541,18 +6607,18 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [136] = {.lex_state = 51, .external_lex_state = 2}, [137] = {.lex_state = 51, .external_lex_state = 2}, [138] = {.lex_state = 51, .external_lex_state = 2}, - [139] = {.lex_state = 51, .external_lex_state = 2}, + [139] = {.lex_state = 14, .external_lex_state = 2}, [140] = {.lex_state = 51, .external_lex_state = 4}, - [141] = {.lex_state = 14, .external_lex_state = 2}, + [141] = {.lex_state = 51, .external_lex_state = 2}, [142] = {.lex_state = 51, .external_lex_state = 2}, [143] = {.lex_state = 51, .external_lex_state = 2}, [144] = {.lex_state = 51, .external_lex_state = 2}, - [145] = {.lex_state = 14, .external_lex_state = 2}, + [145] = {.lex_state = 51, .external_lex_state = 2}, [146] = {.lex_state = 51, .external_lex_state = 2}, - [147] = {.lex_state = 51, .external_lex_state = 2}, + [147] = {.lex_state = 14, .external_lex_state = 2}, [148] = {.lex_state = 51, .external_lex_state = 2}, - [149] = {.lex_state = 51, .external_lex_state = 4}, - [150] = {.lex_state = 51, .external_lex_state = 2}, + [149] = {.lex_state = 51, .external_lex_state = 2}, + [150] = {.lex_state = 51, .external_lex_state = 4}, [151] = {.lex_state = 51, .external_lex_state = 2}, [152] = {.lex_state = 51, .external_lex_state = 2}, [153] = {.lex_state = 51, .external_lex_state = 2}, @@ -6576,36 +6642,36 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [171] = {.lex_state = 51, .external_lex_state = 2}, [172] = {.lex_state = 51, .external_lex_state = 2}, [173] = {.lex_state = 51, .external_lex_state = 2}, - [174] = {.lex_state = 51, .external_lex_state = 4}, + [174] = {.lex_state = 14, .external_lex_state = 2}, [175] = {.lex_state = 51, .external_lex_state = 2}, [176] = {.lex_state = 51, .external_lex_state = 2}, [177] = {.lex_state = 51, .external_lex_state = 2}, - [178] = {.lex_state = 14, .external_lex_state = 2}, - [179] = {.lex_state = 14, .external_lex_state = 2}, - [180] = {.lex_state = 14, .external_lex_state = 2}, + [178] = {.lex_state = 51, .external_lex_state = 2}, + [179] = {.lex_state = 51, .external_lex_state = 4}, + [180] = {.lex_state = 51, .external_lex_state = 2}, [181] = {.lex_state = 51, .external_lex_state = 2}, - [182] = {.lex_state = 51, .external_lex_state = 2}, + [182] = {.lex_state = 51, .external_lex_state = 4}, [183] = {.lex_state = 51, .external_lex_state = 2}, - [184] = {.lex_state = 51, .external_lex_state = 4}, - [185] = {.lex_state = 51, .external_lex_state = 2}, + [184] = {.lex_state = 51, .external_lex_state = 2}, + [185] = {.lex_state = 14, .external_lex_state = 2}, [186] = {.lex_state = 51, .external_lex_state = 2}, - [187] = {.lex_state = 51, .external_lex_state = 2}, + [187] = {.lex_state = 14, .external_lex_state = 2}, [188] = {.lex_state = 51, .external_lex_state = 2}, [189] = {.lex_state = 51, .external_lex_state = 2}, [190] = {.lex_state = 51, .external_lex_state = 2}, - [191] = {.lex_state = 51, .external_lex_state = 4}, + [191] = {.lex_state = 51, .external_lex_state = 2}, [192] = {.lex_state = 51, .external_lex_state = 2}, - [193] = {.lex_state = 51, .external_lex_state = 4}, + [193] = {.lex_state = 51, .external_lex_state = 2}, [194] = {.lex_state = 51, .external_lex_state = 2}, [195] = {.lex_state = 51, .external_lex_state = 2}, [196] = {.lex_state = 51, .external_lex_state = 2}, - [197] = {.lex_state = 51, .external_lex_state = 2}, + [197] = {.lex_state = 51, .external_lex_state = 4}, [198] = {.lex_state = 51, .external_lex_state = 2}, [199] = {.lex_state = 51, .external_lex_state = 2}, [200] = {.lex_state = 51, .external_lex_state = 2}, [201] = {.lex_state = 51, .external_lex_state = 2}, [202] = {.lex_state = 51, .external_lex_state = 2}, - [203] = {.lex_state = 51, .external_lex_state = 2}, + [203] = {.lex_state = 51, .external_lex_state = 4}, [204] = {.lex_state = 51, .external_lex_state = 2}, [205] = {.lex_state = 51, .external_lex_state = 2}, [206] = {.lex_state = 51, .external_lex_state = 2}, @@ -6613,16 +6679,16 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [208] = {.lex_state = 51, .external_lex_state = 2}, [209] = {.lex_state = 51, .external_lex_state = 2}, [210] = {.lex_state = 51, .external_lex_state = 2}, - [211] = {.lex_state = 51, .external_lex_state = 2}, + [211] = {.lex_state = 51, .external_lex_state = 4}, [212] = {.lex_state = 51, .external_lex_state = 2}, [213] = {.lex_state = 51, .external_lex_state = 2}, [214] = {.lex_state = 51, .external_lex_state = 2}, [215] = {.lex_state = 51, .external_lex_state = 2}, [216] = {.lex_state = 51, .external_lex_state = 2}, - [217] = {.lex_state = 51, .external_lex_state = 4}, + [217] = {.lex_state = 51, .external_lex_state = 2}, [218] = {.lex_state = 51, .external_lex_state = 2}, [219] = {.lex_state = 51, .external_lex_state = 2}, - [220] = {.lex_state = 51, .external_lex_state = 4}, + [220] = {.lex_state = 51, .external_lex_state = 2}, [221] = {.lex_state = 51, .external_lex_state = 2}, [222] = {.lex_state = 51, .external_lex_state = 2}, [223] = {.lex_state = 51, .external_lex_state = 2}, @@ -6635,7 +6701,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [230] = {.lex_state = 51, .external_lex_state = 2}, [231] = {.lex_state = 51, .external_lex_state = 2}, [232] = {.lex_state = 51, .external_lex_state = 2}, - [233] = {.lex_state = 51, .external_lex_state = 2}, + [233] = {.lex_state = 51, .external_lex_state = 4}, [234] = {.lex_state = 51, .external_lex_state = 2}, [235] = {.lex_state = 51, .external_lex_state = 2}, [236] = {.lex_state = 51, .external_lex_state = 2}, @@ -6677,11 +6743,11 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [272] = {.lex_state = 51, .external_lex_state = 2}, [273] = {.lex_state = 51, .external_lex_state = 2}, [274] = {.lex_state = 51, .external_lex_state = 2}, - [275] = {.lex_state = 51, .external_lex_state = 2}, + [275] = {.lex_state = 51, .external_lex_state = 3}, [276] = {.lex_state = 51, .external_lex_state = 2}, [277] = {.lex_state = 51, .external_lex_state = 2}, [278] = {.lex_state = 51, .external_lex_state = 2}, - [279] = {.lex_state = 51, .external_lex_state = 3}, + [279] = {.lex_state = 51, .external_lex_state = 2}, [280] = {.lex_state = 51, .external_lex_state = 2}, [281] = {.lex_state = 51, .external_lex_state = 2}, [282] = {.lex_state = 51, .external_lex_state = 2}, @@ -6691,45 +6757,45 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [286] = {.lex_state = 51, .external_lex_state = 2}, [287] = {.lex_state = 51, .external_lex_state = 2}, [288] = {.lex_state = 51, .external_lex_state = 2}, - [289] = {.lex_state = 51, .external_lex_state = 4}, - [290] = {.lex_state = 51, .external_lex_state = 4}, + [289] = {.lex_state = 51, .external_lex_state = 2}, + [290] = {.lex_state = 51, .external_lex_state = 2}, [291] = {.lex_state = 51, .external_lex_state = 4}, [292] = {.lex_state = 51, .external_lex_state = 2}, [293] = {.lex_state = 51, .external_lex_state = 2}, - [294] = {.lex_state = 16}, + [294] = {.lex_state = 51, .external_lex_state = 2}, [295] = {.lex_state = 51, .external_lex_state = 2}, - [296] = {.lex_state = 51, .external_lex_state = 2}, + [296] = {.lex_state = 51, .external_lex_state = 4}, [297] = {.lex_state = 51, .external_lex_state = 2}, [298] = {.lex_state = 51, .external_lex_state = 2}, [299] = {.lex_state = 51, .external_lex_state = 2}, [300] = {.lex_state = 51, .external_lex_state = 4}, - [301] = {.lex_state = 51, .external_lex_state = 2}, + [301] = {.lex_state = 51, .external_lex_state = 4}, [302] = {.lex_state = 51, .external_lex_state = 2}, [303] = {.lex_state = 51, .external_lex_state = 2}, [304] = {.lex_state = 51, .external_lex_state = 2}, [305] = {.lex_state = 51, .external_lex_state = 2}, [306] = {.lex_state = 51, .external_lex_state = 2}, - [307] = {.lex_state = 16}, + [307] = {.lex_state = 51, .external_lex_state = 2}, [308] = {.lex_state = 51, .external_lex_state = 2}, [309] = {.lex_state = 51, .external_lex_state = 2}, [310] = {.lex_state = 51, .external_lex_state = 2}, [311] = {.lex_state = 51, .external_lex_state = 2}, [312] = {.lex_state = 51, .external_lex_state = 2}, - [313] = {.lex_state = 51, .external_lex_state = 3}, - [314] = {.lex_state = 51, .external_lex_state = 3}, + [313] = {.lex_state = 16}, + [314] = {.lex_state = 51, .external_lex_state = 2}, [315] = {.lex_state = 51, .external_lex_state = 2}, - [316] = {.lex_state = 51, .external_lex_state = 2}, - [317] = {.lex_state = 51, .external_lex_state = 2}, - [318] = {.lex_state = 51, .external_lex_state = 2}, - [319] = {.lex_state = 51, .external_lex_state = 3}, + [316] = {.lex_state = 51, .external_lex_state = 3}, + [317] = {.lex_state = 16}, + [318] = {.lex_state = 51, .external_lex_state = 3}, + [319] = {.lex_state = 51, .external_lex_state = 2}, [320] = {.lex_state = 51, .external_lex_state = 3}, - [321] = {.lex_state = 51, .external_lex_state = 2}, - [322] = {.lex_state = 51, .external_lex_state = 2}, + [321] = {.lex_state = 51, .external_lex_state = 3}, + [322] = {.lex_state = 51, .external_lex_state = 3}, [323] = {.lex_state = 51, .external_lex_state = 2}, - [324] = {.lex_state = 16, .external_lex_state = 6}, - [325] = {.lex_state = 51, .external_lex_state = 2}, - [326] = {.lex_state = 51, .external_lex_state = 3}, - [327] = {.lex_state = 51, .external_lex_state = 3}, + [324] = {.lex_state = 51, .external_lex_state = 3}, + [325] = {.lex_state = 51, .external_lex_state = 3}, + [326] = {.lex_state = 51, .external_lex_state = 2}, + [327] = {.lex_state = 51, .external_lex_state = 2}, [328] = {.lex_state = 51, .external_lex_state = 2}, [329] = {.lex_state = 51, .external_lex_state = 2}, [330] = {.lex_state = 51, .external_lex_state = 3}, @@ -6737,10 +6803,10 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [332] = {.lex_state = 51, .external_lex_state = 2}, [333] = {.lex_state = 51, .external_lex_state = 3}, [334] = {.lex_state = 51, .external_lex_state = 2}, - [335] = {.lex_state = 51, .external_lex_state = 3}, - [336] = {.lex_state = 51, .external_lex_state = 3}, - [337] = {.lex_state = 51, .external_lex_state = 2}, - [338] = {.lex_state = 16, .external_lex_state = 6}, + [335] = {.lex_state = 51, .external_lex_state = 2}, + [336] = {.lex_state = 51, .external_lex_state = 2}, + [337] = {.lex_state = 51, .external_lex_state = 3}, + [338] = {.lex_state = 51, .external_lex_state = 2}, [339] = {.lex_state = 51, .external_lex_state = 2}, [340] = {.lex_state = 51, .external_lex_state = 2}, [341] = {.lex_state = 51, .external_lex_state = 2}, @@ -6749,10 +6815,10 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [344] = {.lex_state = 51, .external_lex_state = 2}, [345] = {.lex_state = 51, .external_lex_state = 2}, [346] = {.lex_state = 51, .external_lex_state = 2}, - [347] = {.lex_state = 51, .external_lex_state = 2}, + [347] = {.lex_state = 16, .external_lex_state = 6}, [348] = {.lex_state = 51, .external_lex_state = 2}, [349] = {.lex_state = 51, .external_lex_state = 2}, - [350] = {.lex_state = 51, .external_lex_state = 2}, + [350] = {.lex_state = 51, .external_lex_state = 3}, [351] = {.lex_state = 51, .external_lex_state = 2}, [352] = {.lex_state = 51, .external_lex_state = 2}, [353] = {.lex_state = 51, .external_lex_state = 2}, @@ -6769,7 +6835,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [364] = {.lex_state = 51, .external_lex_state = 2}, [365] = {.lex_state = 51, .external_lex_state = 2}, [366] = {.lex_state = 51, .external_lex_state = 2}, - [367] = {.lex_state = 16, .external_lex_state = 7}, + [367] = {.lex_state = 51, .external_lex_state = 2}, [368] = {.lex_state = 51, .external_lex_state = 2}, [369] = {.lex_state = 51, .external_lex_state = 2}, [370] = {.lex_state = 51, .external_lex_state = 2}, @@ -6801,7 +6867,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [396] = {.lex_state = 51, .external_lex_state = 2}, [397] = {.lex_state = 51, .external_lex_state = 2}, [398] = {.lex_state = 51, .external_lex_state = 2}, - [399] = {.lex_state = 51, .external_lex_state = 3}, + [399] = {.lex_state = 51, .external_lex_state = 2}, [400] = {.lex_state = 51, .external_lex_state = 2}, [401] = {.lex_state = 51, .external_lex_state = 2}, [402] = {.lex_state = 51, .external_lex_state = 2}, @@ -6839,85 +6905,85 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [434] = {.lex_state = 51, .external_lex_state = 2}, [435] = {.lex_state = 51, .external_lex_state = 2}, [436] = {.lex_state = 51, .external_lex_state = 2}, - [437] = {.lex_state = 51, .external_lex_state = 3}, - [438] = {.lex_state = 51, .external_lex_state = 3}, + [437] = {.lex_state = 16, .external_lex_state = 6}, + [438] = {.lex_state = 51, .external_lex_state = 2}, [439] = {.lex_state = 51, .external_lex_state = 3}, [440] = {.lex_state = 51, .external_lex_state = 3}, - [441] = {.lex_state = 51, .external_lex_state = 3}, + [441] = {.lex_state = 51, .external_lex_state = 2}, [442] = {.lex_state = 51, .external_lex_state = 2}, - [443] = {.lex_state = 51, .external_lex_state = 3}, + [443] = {.lex_state = 51, .external_lex_state = 2}, [444] = {.lex_state = 51, .external_lex_state = 3}, - [445] = {.lex_state = 51, .external_lex_state = 3}, - [446] = {.lex_state = 51, .external_lex_state = 3}, - [447] = {.lex_state = 51, .external_lex_state = 3}, - [448] = {.lex_state = 51, .external_lex_state = 2}, + [445] = {.lex_state = 51, .external_lex_state = 2}, + [446] = {.lex_state = 51, .external_lex_state = 2}, + [447] = {.lex_state = 51, .external_lex_state = 2}, + [448] = {.lex_state = 51, .external_lex_state = 3}, [449] = {.lex_state = 51, .external_lex_state = 2}, [450] = {.lex_state = 51, .external_lex_state = 2}, [451] = {.lex_state = 51, .external_lex_state = 2}, - [452] = {.lex_state = 51, .external_lex_state = 3}, - [453] = {.lex_state = 51, .external_lex_state = 2}, - [454] = {.lex_state = 51, .external_lex_state = 2}, + [452] = {.lex_state = 16, .external_lex_state = 7}, + [453] = {.lex_state = 16, .external_lex_state = 6}, + [454] = {.lex_state = 51, .external_lex_state = 3}, [455] = {.lex_state = 51, .external_lex_state = 2}, - [456] = {.lex_state = 51, .external_lex_state = 2}, + [456] = {.lex_state = 51, .external_lex_state = 3}, [457] = {.lex_state = 51, .external_lex_state = 2}, - [458] = {.lex_state = 16, .external_lex_state = 6}, - [459] = {.lex_state = 51, .external_lex_state = 2}, + [458] = {.lex_state = 51, .external_lex_state = 3}, + [459] = {.lex_state = 51, .external_lex_state = 3}, [460] = {.lex_state = 51, .external_lex_state = 3}, [461] = {.lex_state = 51, .external_lex_state = 2}, - [462] = {.lex_state = 16, .external_lex_state = 6}, - [463] = {.lex_state = 51, .external_lex_state = 2}, - [464] = {.lex_state = 51, .external_lex_state = 2}, - [465] = {.lex_state = 16, .external_lex_state = 6}, - [466] = {.lex_state = 51, .external_lex_state = 3}, + [462] = {.lex_state = 51, .external_lex_state = 3}, + [463] = {.lex_state = 51, .external_lex_state = 3}, + [464] = {.lex_state = 51, .external_lex_state = 3}, + [465] = {.lex_state = 51, .external_lex_state = 2}, + [466] = {.lex_state = 51, .external_lex_state = 2}, [467] = {.lex_state = 51, .external_lex_state = 2}, [468] = {.lex_state = 51, .external_lex_state = 2}, - [469] = {.lex_state = 51, .external_lex_state = 3}, - [470] = {.lex_state = 51, .external_lex_state = 3}, + [469] = {.lex_state = 16, .external_lex_state = 6}, + [470] = {.lex_state = 16}, [471] = {.lex_state = 51, .external_lex_state = 2}, [472] = {.lex_state = 51, .external_lex_state = 2}, - [473] = {.lex_state = 51, .external_lex_state = 3}, - [474] = {.lex_state = 16}, - [475] = {.lex_state = 16, .external_lex_state = 6}, + [473] = {.lex_state = 51, .external_lex_state = 2}, + [474] = {.lex_state = 51, .external_lex_state = 2}, + [475] = {.lex_state = 51, .external_lex_state = 2}, [476] = {.lex_state = 51, .external_lex_state = 2}, [477] = {.lex_state = 51, .external_lex_state = 3}, [478] = {.lex_state = 51, .external_lex_state = 2}, [479] = {.lex_state = 51, .external_lex_state = 3}, [480] = {.lex_state = 51, .external_lex_state = 3}, [481] = {.lex_state = 51, .external_lex_state = 2}, - [482] = {.lex_state = 51, .external_lex_state = 2}, - [483] = {.lex_state = 16, .external_lex_state = 6}, - [484] = {.lex_state = 51, .external_lex_state = 2}, - [485] = {.lex_state = 51, .external_lex_state = 2}, + [482] = {.lex_state = 51, .external_lex_state = 3}, + [483] = {.lex_state = 51, .external_lex_state = 2}, + [484] = {.lex_state = 51, .external_lex_state = 3}, + [485] = {.lex_state = 51, .external_lex_state = 3}, [486] = {.lex_state = 51, .external_lex_state = 3}, - [487] = {.lex_state = 16}, + [487] = {.lex_state = 51, .external_lex_state = 3}, [488] = {.lex_state = 51, .external_lex_state = 3}, [489] = {.lex_state = 51, .external_lex_state = 3}, [490] = {.lex_state = 51, .external_lex_state = 2}, [491] = {.lex_state = 51, .external_lex_state = 3}, - [492] = {.lex_state = 51, .external_lex_state = 3}, + [492] = {.lex_state = 16, .external_lex_state = 6}, [493] = {.lex_state = 51, .external_lex_state = 2}, [494] = {.lex_state = 16, .external_lex_state = 6}, [495] = {.lex_state = 51, .external_lex_state = 2}, [496] = {.lex_state = 51, .external_lex_state = 2}, - [497] = {.lex_state = 51, .external_lex_state = 2}, + [497] = {.lex_state = 51, .external_lex_state = 3}, [498] = {.lex_state = 51, .external_lex_state = 2}, - [499] = {.lex_state = 51, .external_lex_state = 2}, - [500] = {.lex_state = 51, .external_lex_state = 2}, + [499] = {.lex_state = 16, .external_lex_state = 6}, + [500] = {.lex_state = 51, .external_lex_state = 3}, [501] = {.lex_state = 51, .external_lex_state = 2}, - [502] = {.lex_state = 16, .external_lex_state = 6}, - [503] = {.lex_state = 51, .external_lex_state = 3}, + [502] = {.lex_state = 51, .external_lex_state = 3}, + [503] = {.lex_state = 16, .external_lex_state = 6}, [504] = {.lex_state = 51, .external_lex_state = 3}, [505] = {.lex_state = 51, .external_lex_state = 3}, - [506] = {.lex_state = 51, .external_lex_state = 3}, + [506] = {.lex_state = 51, .external_lex_state = 2}, [507] = {.lex_state = 51, .external_lex_state = 3}, [508] = {.lex_state = 51, .external_lex_state = 2}, - [509] = {.lex_state = 16}, + [509] = {.lex_state = 51, .external_lex_state = 2}, [510] = {.lex_state = 51, .external_lex_state = 2}, [511] = {.lex_state = 51, .external_lex_state = 2}, [512] = {.lex_state = 51, .external_lex_state = 2}, - [513] = {.lex_state = 16, .external_lex_state = 6}, - [514] = {.lex_state = 51, .external_lex_state = 2}, - [515] = {.lex_state = 51, .external_lex_state = 2}, + [513] = {.lex_state = 51, .external_lex_state = 2}, + [514] = {.lex_state = 51, .external_lex_state = 3}, + [515] = {.lex_state = 16, .external_lex_state = 6}, [516] = {.lex_state = 51, .external_lex_state = 2}, [517] = {.lex_state = 51, .external_lex_state = 2}, [518] = {.lex_state = 51, .external_lex_state = 2}, @@ -6926,7 +6992,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [521] = {.lex_state = 51, .external_lex_state = 2}, [522] = {.lex_state = 51, .external_lex_state = 2}, [523] = {.lex_state = 51, .external_lex_state = 2}, - [524] = {.lex_state = 51, .external_lex_state = 2}, + [524] = {.lex_state = 16, .external_lex_state = 6}, [525] = {.lex_state = 51, .external_lex_state = 2}, [526] = {.lex_state = 51, .external_lex_state = 2}, [527] = {.lex_state = 51, .external_lex_state = 2}, @@ -6936,39 +7002,39 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [531] = {.lex_state = 51, .external_lex_state = 2}, [532] = {.lex_state = 51, .external_lex_state = 2}, [533] = {.lex_state = 51, .external_lex_state = 2}, - [534] = {.lex_state = 51, .external_lex_state = 2}, + [534] = {.lex_state = 51, .external_lex_state = 3}, [535] = {.lex_state = 51, .external_lex_state = 2}, [536] = {.lex_state = 51, .external_lex_state = 2}, [537] = {.lex_state = 51, .external_lex_state = 2}, [538] = {.lex_state = 51, .external_lex_state = 2}, [539] = {.lex_state = 51, .external_lex_state = 2}, - [540] = {.lex_state = 51, .external_lex_state = 2}, + [540] = {.lex_state = 51, .external_lex_state = 3}, [541] = {.lex_state = 51, .external_lex_state = 2}, [542] = {.lex_state = 51, .external_lex_state = 2}, [543] = {.lex_state = 51, .external_lex_state = 2}, - [544] = {.lex_state = 51, .external_lex_state = 2}, - [545] = {.lex_state = 51, .external_lex_state = 2}, - [546] = {.lex_state = 51, .external_lex_state = 2}, + [544] = {.lex_state = 51, .external_lex_state = 3}, + [545] = {.lex_state = 51, .external_lex_state = 3}, + [546] = {.lex_state = 51, .external_lex_state = 3}, [547] = {.lex_state = 51, .external_lex_state = 2}, [548] = {.lex_state = 51, .external_lex_state = 2}, - [549] = {.lex_state = 51, .external_lex_state = 2}, + [549] = {.lex_state = 51, .external_lex_state = 3}, [550] = {.lex_state = 51, .external_lex_state = 2}, - [551] = {.lex_state = 51, .external_lex_state = 2}, + [551] = {.lex_state = 51, .external_lex_state = 3}, [552] = {.lex_state = 51, .external_lex_state = 3}, - [553] = {.lex_state = 51, .external_lex_state = 3}, + [553] = {.lex_state = 51, .external_lex_state = 2}, [554] = {.lex_state = 51, .external_lex_state = 3}, - [555] = {.lex_state = 51, .external_lex_state = 3}, + [555] = {.lex_state = 51, .external_lex_state = 2}, [556] = {.lex_state = 51, .external_lex_state = 3}, - [557] = {.lex_state = 51, .external_lex_state = 3}, - [558] = {.lex_state = 51, .external_lex_state = 3}, + [557] = {.lex_state = 51, .external_lex_state = 2}, + [558] = {.lex_state = 51, .external_lex_state = 2}, [559] = {.lex_state = 51, .external_lex_state = 3}, [560] = {.lex_state = 51, .external_lex_state = 3}, [561] = {.lex_state = 51, .external_lex_state = 3}, [562] = {.lex_state = 51, .external_lex_state = 3}, [563] = {.lex_state = 51, .external_lex_state = 3}, - [564] = {.lex_state = 51, .external_lex_state = 3}, + [564] = {.lex_state = 51, .external_lex_state = 2}, [565] = {.lex_state = 51, .external_lex_state = 3}, - [566] = {.lex_state = 51, .external_lex_state = 3}, + [566] = {.lex_state = 51, .external_lex_state = 2}, [567] = {.lex_state = 51, .external_lex_state = 3}, [568] = {.lex_state = 51, .external_lex_state = 3}, [569] = {.lex_state = 51, .external_lex_state = 3}, @@ -6983,30 +7049,30 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [578] = {.lex_state = 51, .external_lex_state = 3}, [579] = {.lex_state = 51, .external_lex_state = 3}, [580] = {.lex_state = 51, .external_lex_state = 3}, - [581] = {.lex_state = 51, .external_lex_state = 2}, - [582] = {.lex_state = 51, .external_lex_state = 3}, + [581] = {.lex_state = 51, .external_lex_state = 3}, + [582] = {.lex_state = 51, .external_lex_state = 2}, [583] = {.lex_state = 51, .external_lex_state = 3}, [584] = {.lex_state = 51, .external_lex_state = 3}, [585] = {.lex_state = 51, .external_lex_state = 3}, [586] = {.lex_state = 51, .external_lex_state = 3}, [587] = {.lex_state = 51, .external_lex_state = 3}, - [588] = {.lex_state = 51, .external_lex_state = 2}, - [589] = {.lex_state = 51, .external_lex_state = 3}, + [588] = {.lex_state = 51, .external_lex_state = 3}, + [589] = {.lex_state = 51, .external_lex_state = 2}, [590] = {.lex_state = 51, .external_lex_state = 3}, [591] = {.lex_state = 51, .external_lex_state = 3}, [592] = {.lex_state = 51, .external_lex_state = 3}, - [593] = {.lex_state = 51, .external_lex_state = 3}, - [594] = {.lex_state = 51, .external_lex_state = 3}, + [593] = {.lex_state = 51, .external_lex_state = 2}, + [594] = {.lex_state = 51, .external_lex_state = 2}, [595] = {.lex_state = 51, .external_lex_state = 3}, - [596] = {.lex_state = 51, .external_lex_state = 2}, - [597] = {.lex_state = 51, .external_lex_state = 2}, + [596] = {.lex_state = 51, .external_lex_state = 3}, + [597] = {.lex_state = 51, .external_lex_state = 3}, [598] = {.lex_state = 51, .external_lex_state = 3}, [599] = {.lex_state = 51, .external_lex_state = 3}, - [600] = {.lex_state = 51, .external_lex_state = 3}, - [601] = {.lex_state = 51, .external_lex_state = 3}, + [600] = {.lex_state = 51, .external_lex_state = 2}, + [601] = {.lex_state = 51, .external_lex_state = 2}, [602] = {.lex_state = 51, .external_lex_state = 3}, [603] = {.lex_state = 51, .external_lex_state = 3}, - [604] = {.lex_state = 51, .external_lex_state = 3}, + [604] = {.lex_state = 51, .external_lex_state = 2}, [605] = {.lex_state = 51, .external_lex_state = 2}, [606] = {.lex_state = 51, .external_lex_state = 2}, [607] = {.lex_state = 51, .external_lex_state = 2}, @@ -7016,20 +7082,20 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [611] = {.lex_state = 51, .external_lex_state = 2}, [612] = {.lex_state = 51, .external_lex_state = 2}, [613] = {.lex_state = 51, .external_lex_state = 2}, - [614] = {.lex_state = 51, .external_lex_state = 2}, + [614] = {.lex_state = 16, .external_lex_state = 6}, [615] = {.lex_state = 51, .external_lex_state = 2}, - [616] = {.lex_state = 16, .external_lex_state = 8}, - [617] = {.lex_state = 16, .external_lex_state = 9}, - [618] = {.lex_state = 51, .external_lex_state = 2}, - [619] = {.lex_state = 16, .external_lex_state = 8}, - [620] = {.lex_state = 16, .external_lex_state = 9}, - [621] = {.lex_state = 16, .external_lex_state = 8}, + [616] = {.lex_state = 51, .external_lex_state = 3}, + [617] = {.lex_state = 16}, + [618] = {.lex_state = 16}, + [619] = {.lex_state = 51, .external_lex_state = 2}, + [620] = {.lex_state = 51, .external_lex_state = 2}, + [621] = {.lex_state = 51, .external_lex_state = 2}, [622] = {.lex_state = 51, .external_lex_state = 2}, [623] = {.lex_state = 51, .external_lex_state = 2}, - [624] = {.lex_state = 16, .external_lex_state = 9}, + [624] = {.lex_state = 51, .external_lex_state = 2}, [625] = {.lex_state = 51, .external_lex_state = 2}, [626] = {.lex_state = 51, .external_lex_state = 2}, - [627] = {.lex_state = 51, .external_lex_state = 2}, + [627] = {.lex_state = 16, .external_lex_state = 8}, [628] = {.lex_state = 51, .external_lex_state = 2}, [629] = {.lex_state = 51, .external_lex_state = 2}, [630] = {.lex_state = 51, .external_lex_state = 2}, @@ -7087,25 +7153,25 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [682] = {.lex_state = 51, .external_lex_state = 2}, [683] = {.lex_state = 51, .external_lex_state = 2}, [684] = {.lex_state = 51, .external_lex_state = 2}, - [685] = {.lex_state = 51, .external_lex_state = 2}, + [685] = {.lex_state = 16, .external_lex_state = 9}, [686] = {.lex_state = 51, .external_lex_state = 2}, [687] = {.lex_state = 51, .external_lex_state = 2}, [688] = {.lex_state = 51, .external_lex_state = 2}, [689] = {.lex_state = 51, .external_lex_state = 2}, - [690] = {.lex_state = 51, .external_lex_state = 2}, + [690] = {.lex_state = 16, .external_lex_state = 9}, [691] = {.lex_state = 51, .external_lex_state = 2}, [692] = {.lex_state = 51, .external_lex_state = 2}, - [693] = {.lex_state = 51, .external_lex_state = 2}, - [694] = {.lex_state = 51, .external_lex_state = 2}, - [695] = {.lex_state = 16, .external_lex_state = 8}, - [696] = {.lex_state = 16, .external_lex_state = 9}, - [697] = {.lex_state = 16, .external_lex_state = 8}, - [698] = {.lex_state = 16, .external_lex_state = 9}, - [699] = {.lex_state = 16}, - [700] = {.lex_state = 16}, - [701] = {.lex_state = 16}, - [702] = {.lex_state = 16}, - [703] = {.lex_state = 16}, + [693] = {.lex_state = 16, .external_lex_state = 8}, + [694] = {.lex_state = 16, .external_lex_state = 9}, + [695] = {.lex_state = 51, .external_lex_state = 2}, + [696] = {.lex_state = 51, .external_lex_state = 2}, + [697] = {.lex_state = 51, .external_lex_state = 2}, + [698] = {.lex_state = 16, .external_lex_state = 8}, + [699] = {.lex_state = 51, .external_lex_state = 2}, + [700] = {.lex_state = 16, .external_lex_state = 8}, + [701] = {.lex_state = 16, .external_lex_state = 8}, + [702] = {.lex_state = 16, .external_lex_state = 9}, + [703] = {.lex_state = 16, .external_lex_state = 9}, [704] = {.lex_state = 16}, [705] = {.lex_state = 16}, [706] = {.lex_state = 16}, @@ -7114,8 +7180,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [709] = {.lex_state = 16}, [710] = {.lex_state = 16}, [711] = {.lex_state = 16}, - [712] = {.lex_state = 15}, - [713] = {.lex_state = 15}, + [712] = {.lex_state = 16}, + [713] = {.lex_state = 16}, [714] = {.lex_state = 16}, [715] = {.lex_state = 16}, [716] = {.lex_state = 16}, @@ -7138,25 +7204,25 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [733] = {.lex_state = 16}, [734] = {.lex_state = 16}, [735] = {.lex_state = 16}, - [736] = {.lex_state = 16}, - [737] = {.lex_state = 16}, + [736] = {.lex_state = 15}, + [737] = {.lex_state = 15}, [738] = {.lex_state = 16}, [739] = {.lex_state = 16}, [740] = {.lex_state = 16}, [741] = {.lex_state = 16}, [742] = {.lex_state = 16}, [743] = {.lex_state = 16}, - [744] = {.lex_state = 16, .external_lex_state = 8}, - [745] = {.lex_state = 16, .external_lex_state = 9}, - [746] = {.lex_state = 16, .external_lex_state = 8}, - [747] = {.lex_state = 16, .external_lex_state = 9}, + [744] = {.lex_state = 16}, + [745] = {.lex_state = 16}, + [746] = {.lex_state = 16}, + [747] = {.lex_state = 16}, [748] = {.lex_state = 16}, - [749] = {.lex_state = 16}, - [750] = {.lex_state = 16}, + [749] = {.lex_state = 16, .external_lex_state = 9}, + [750] = {.lex_state = 16, .external_lex_state = 8}, [751] = {.lex_state = 16}, [752] = {.lex_state = 16}, - [753] = {.lex_state = 16}, - [754] = {.lex_state = 16}, + [753] = {.lex_state = 16, .external_lex_state = 9}, + [754] = {.lex_state = 16, .external_lex_state = 8}, [755] = {.lex_state = 16}, [756] = {.lex_state = 16}, [757] = {.lex_state = 16}, @@ -7164,123 +7230,123 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [759] = {.lex_state = 16}, [760] = {.lex_state = 16}, [761] = {.lex_state = 16}, - [762] = {.lex_state = 15, .external_lex_state = 9}, - [763] = {.lex_state = 16, .external_lex_state = 10}, + [762] = {.lex_state = 16}, + [763] = {.lex_state = 16}, [764] = {.lex_state = 16}, - [765] = {.lex_state = 16, .external_lex_state = 7}, - [766] = {.lex_state = 15}, - [767] = {.lex_state = 15, .external_lex_state = 8}, + [765] = {.lex_state = 16}, + [766] = {.lex_state = 16}, + [767] = {.lex_state = 16}, [768] = {.lex_state = 15, .external_lex_state = 9}, [769] = {.lex_state = 15, .external_lex_state = 8}, - [770] = {.lex_state = 15, .external_lex_state = 9}, - [771] = {.lex_state = 15, .external_lex_state = 8}, - [772] = {.lex_state = 16}, - [773] = {.lex_state = 16}, + [770] = {.lex_state = 16, .external_lex_state = 7}, + [771] = {.lex_state = 16, .external_lex_state = 10}, + [772] = {.lex_state = 16, .external_lex_state = 10}, + [773] = {.lex_state = 16, .external_lex_state = 6}, [774] = {.lex_state = 16}, - [775] = {.lex_state = 16, .external_lex_state = 7}, - [776] = {.lex_state = 16, .external_lex_state = 10}, - [777] = {.lex_state = 16}, - [778] = {.lex_state = 16, .external_lex_state = 10}, - [779] = {.lex_state = 16, .external_lex_state = 6}, - [780] = {.lex_state = 16}, - [781] = {.lex_state = 16}, - [782] = {.lex_state = 16, .external_lex_state = 7}, - [783] = {.lex_state = 15}, - [784] = {.lex_state = 15}, - [785] = {.lex_state = 15}, - [786] = {.lex_state = 15}, - [787] = {.lex_state = 15}, - [788] = {.lex_state = 15}, - [789] = {.lex_state = 15}, - [790] = {.lex_state = 16}, - [791] = {.lex_state = 15}, - [792] = {.lex_state = 15}, - [793] = {.lex_state = 15}, - [794] = {.lex_state = 16, .external_lex_state = 8}, - [795] = {.lex_state = 16, .external_lex_state = 9}, + [775] = {.lex_state = 16}, + [776] = {.lex_state = 16, .external_lex_state = 7}, + [777] = {.lex_state = 16, .external_lex_state = 10}, + [778] = {.lex_state = 16}, + [779] = {.lex_state = 16, .external_lex_state = 7}, + [780] = {.lex_state = 15}, + [781] = {.lex_state = 15, .external_lex_state = 9}, + [782] = {.lex_state = 15, .external_lex_state = 8}, + [783] = {.lex_state = 16}, + [784] = {.lex_state = 15, .external_lex_state = 9}, + [785] = {.lex_state = 15, .external_lex_state = 8}, + [786] = {.lex_state = 16}, + [787] = {.lex_state = 16}, + [788] = {.lex_state = 16, .external_lex_state = 6}, + [789] = {.lex_state = 16}, + [790] = {.lex_state = 16, .external_lex_state = 9}, + [791] = {.lex_state = 16, .external_lex_state = 8}, + [792] = {.lex_state = 16, .external_lex_state = 9}, + [793] = {.lex_state = 16, .external_lex_state = 8}, + [794] = {.lex_state = 16, .external_lex_state = 9}, + [795] = {.lex_state = 16, .external_lex_state = 8}, [796] = {.lex_state = 16, .external_lex_state = 6}, - [797] = {.lex_state = 15}, - [798] = {.lex_state = 15}, + [797] = {.lex_state = 16, .external_lex_state = 6}, + [798] = {.lex_state = 16, .external_lex_state = 6}, [799] = {.lex_state = 16, .external_lex_state = 6}, [800] = {.lex_state = 16, .external_lex_state = 6}, [801] = {.lex_state = 16, .external_lex_state = 6}, [802] = {.lex_state = 16, .external_lex_state = 6}, - [803] = {.lex_state = 16}, - [804] = {.lex_state = 16, .external_lex_state = 6}, - [805] = {.lex_state = 16, .external_lex_state = 6}, - [806] = {.lex_state = 16, .external_lex_state = 8}, - [807] = {.lex_state = 16, .external_lex_state = 9}, - [808] = {.lex_state = 16, .external_lex_state = 8}, - [809] = {.lex_state = 16, .external_lex_state = 9}, - [810] = {.lex_state = 16, .external_lex_state = 6}, - [811] = {.lex_state = 16, .external_lex_state = 6}, - [812] = {.lex_state = 16}, - [813] = {.lex_state = 16}, - [814] = {.lex_state = 16}, - [815] = {.lex_state = 16}, - [816] = {.lex_state = 16}, - [817] = {.lex_state = 16}, - [818] = {.lex_state = 16}, + [803] = {.lex_state = 16, .external_lex_state = 6}, + [804] = {.lex_state = 15}, + [805] = {.lex_state = 15}, + [806] = {.lex_state = 16, .external_lex_state = 6}, + [807] = {.lex_state = 16, .external_lex_state = 6}, + [808] = {.lex_state = 16}, + [809] = {.lex_state = 15}, + [810] = {.lex_state = 15}, + [811] = {.lex_state = 15}, + [812] = {.lex_state = 15}, + [813] = {.lex_state = 15}, + [814] = {.lex_state = 15}, + [815] = {.lex_state = 15}, + [816] = {.lex_state = 15}, + [817] = {.lex_state = 15}, + [818] = {.lex_state = 16, .external_lex_state = 6}, [819] = {.lex_state = 16}, [820] = {.lex_state = 16}, [821] = {.lex_state = 16}, [822] = {.lex_state = 16}, - [823] = {.lex_state = 16, .external_lex_state = 6}, - [824] = {.lex_state = 16, .external_lex_state = 6}, - [825] = {.lex_state = 16, .external_lex_state = 6}, - [826] = {.lex_state = 16, .external_lex_state = 6}, - [827] = {.lex_state = 16, .external_lex_state = 10}, + [823] = {.lex_state = 16}, + [824] = {.lex_state = 16}, + [825] = {.lex_state = 16}, + [826] = {.lex_state = 16}, + [827] = {.lex_state = 16}, [828] = {.lex_state = 16}, [829] = {.lex_state = 16}, - [830] = {.lex_state = 16, .external_lex_state = 10}, - [831] = {.lex_state = 16}, - [832] = {.lex_state = 16}, + [830] = {.lex_state = 15}, + [831] = {.lex_state = 16, .external_lex_state = 6}, + [832] = {.lex_state = 15}, [833] = {.lex_state = 16}, - [834] = {.lex_state = 16}, - [835] = {.lex_state = 16}, - [836] = {.lex_state = 16}, + [834] = {.lex_state = 15, .external_lex_state = 8}, + [835] = {.lex_state = 16, .external_lex_state = 6}, + [836] = {.lex_state = 15}, [837] = {.lex_state = 16}, [838] = {.lex_state = 16}, [839] = {.lex_state = 16}, - [840] = {.lex_state = 15}, - [841] = {.lex_state = 15, .external_lex_state = 8}, + [840] = {.lex_state = 15, .external_lex_state = 8}, + [841] = {.lex_state = 51, .external_lex_state = 2}, [842] = {.lex_state = 16}, - [843] = {.lex_state = 16}, + [843] = {.lex_state = 16, .external_lex_state = 7}, [844] = {.lex_state = 16}, [845] = {.lex_state = 16}, - [846] = {.lex_state = 51, .external_lex_state = 2}, - [847] = {.lex_state = 16, .external_lex_state = 7}, - [848] = {.lex_state = 16}, + [846] = {.lex_state = 15, .external_lex_state = 9}, + [847] = {.lex_state = 16, .external_lex_state = 10}, + [848] = {.lex_state = 15, .external_lex_state = 9}, [849] = {.lex_state = 16}, - [850] = {.lex_state = 15, .external_lex_state = 8}, - [851] = {.lex_state = 15, .external_lex_state = 9}, - [852] = {.lex_state = 16}, - [853] = {.lex_state = 16, .external_lex_state = 6}, - [854] = {.lex_state = 51, .external_lex_state = 2}, + [850] = {.lex_state = 16}, + [851] = {.lex_state = 16}, + [852] = {.lex_state = 16, .external_lex_state = 7}, + [853] = {.lex_state = 16, .external_lex_state = 10}, + [854] = {.lex_state = 16}, [855] = {.lex_state = 16}, - [856] = {.lex_state = 51, .external_lex_state = 2}, + [856] = {.lex_state = 16}, [857] = {.lex_state = 16}, [858] = {.lex_state = 16}, - [859] = {.lex_state = 15, .external_lex_state = 9}, + [859] = {.lex_state = 16}, [860] = {.lex_state = 16}, - [861] = {.lex_state = 16, .external_lex_state = 7}, - [862] = {.lex_state = 51, .external_lex_state = 2}, + [861] = {.lex_state = 51, .external_lex_state = 2}, + [862] = {.lex_state = 16}, [863] = {.lex_state = 16}, [864] = {.lex_state = 16}, - [865] = {.lex_state = 15}, - [866] = {.lex_state = 15}, - [867] = {.lex_state = 16, .external_lex_state = 6}, - [868] = {.lex_state = 15}, - [869] = {.lex_state = 15}, - [870] = {.lex_state = 16}, + [865] = {.lex_state = 16}, + [866] = {.lex_state = 16}, + [867] = {.lex_state = 16}, + [868] = {.lex_state = 16}, + [869] = {.lex_state = 51, .external_lex_state = 2}, + [870] = {.lex_state = 51, .external_lex_state = 2}, [871] = {.lex_state = 16}, - [872] = {.lex_state = 15}, - [873] = {.lex_state = 15}, + [872] = {.lex_state = 16}, + [873] = {.lex_state = 16, .external_lex_state = 6}, [874] = {.lex_state = 15}, [875] = {.lex_state = 15}, [876] = {.lex_state = 15}, - [877] = {.lex_state = 15}, - [878] = {.lex_state = 16, .external_lex_state = 6}, + [877] = {.lex_state = 16, .external_lex_state = 6}, + [878] = {.lex_state = 15}, [879] = {.lex_state = 15}, [880] = {.lex_state = 15}, [881] = {.lex_state = 15}, @@ -7288,72 +7354,72 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [883] = {.lex_state = 15}, [884] = {.lex_state = 15}, [885] = {.lex_state = 15}, - [886] = {.lex_state = 16, .external_lex_state = 6}, + [886] = {.lex_state = 15}, [887] = {.lex_state = 15}, [888] = {.lex_state = 15}, [889] = {.lex_state = 15}, [890] = {.lex_state = 15}, - [891] = {.lex_state = 16, .external_lex_state = 6}, - [892] = {.lex_state = 15}, - [893] = {.lex_state = 15}, + [891] = {.lex_state = 15}, + [892] = {.lex_state = 16}, + [893] = {.lex_state = 16}, [894] = {.lex_state = 15}, - [895] = {.lex_state = 15}, - [896] = {.lex_state = 15}, - [897] = {.lex_state = 15}, - [898] = {.lex_state = 15}, + [895] = {.lex_state = 16, .external_lex_state = 6}, + [896] = {.lex_state = 51, .external_lex_state = 2}, + [897] = {.lex_state = 51, .external_lex_state = 2}, + [898] = {.lex_state = 16, .external_lex_state = 6}, [899] = {.lex_state = 15}, - [900] = {.lex_state = 15}, - [901] = {.lex_state = 16, .external_lex_state = 6}, - [902] = {.lex_state = 16, .external_lex_state = 6}, + [900] = {.lex_state = 16, .external_lex_state = 6}, + [901] = {.lex_state = 15}, + [902] = {.lex_state = 15}, [903] = {.lex_state = 16, .external_lex_state = 6}, [904] = {.lex_state = 16, .external_lex_state = 6}, [905] = {.lex_state = 16, .external_lex_state = 6}, [906] = {.lex_state = 15}, - [907] = {.lex_state = 16, .external_lex_state = 6}, + [907] = {.lex_state = 16}, [908] = {.lex_state = 16, .external_lex_state = 6}, [909] = {.lex_state = 16, .external_lex_state = 6}, [910] = {.lex_state = 16, .external_lex_state = 6}, - [911] = {.lex_state = 16}, - [912] = {.lex_state = 16}, - [913] = {.lex_state = 16, .external_lex_state = 6}, - [914] = {.lex_state = 16, .external_lex_state = 6}, - [915] = {.lex_state = 16}, + [911] = {.lex_state = 16, .external_lex_state = 6}, + [912] = {.lex_state = 15}, + [913] = {.lex_state = 16}, + [914] = {.lex_state = 16}, + [915] = {.lex_state = 16, .external_lex_state = 6}, [916] = {.lex_state = 16, .external_lex_state = 6}, - [917] = {.lex_state = 16, .external_lex_state = 6}, - [918] = {.lex_state = 16, .external_lex_state = 6}, - [919] = {.lex_state = 16}, + [917] = {.lex_state = 16}, + [918] = {.lex_state = 15}, + [919] = {.lex_state = 16, .external_lex_state = 6}, [920] = {.lex_state = 16, .external_lex_state = 6}, [921] = {.lex_state = 16, .external_lex_state = 6}, [922] = {.lex_state = 16, .external_lex_state = 6}, [923] = {.lex_state = 16, .external_lex_state = 6}, - [924] = {.lex_state = 15}, - [925] = {.lex_state = 16}, + [924] = {.lex_state = 16}, + [925] = {.lex_state = 15}, [926] = {.lex_state = 16, .external_lex_state = 6}, - [927] = {.lex_state = 51, .external_lex_state = 2}, - [928] = {.lex_state = 51, .external_lex_state = 2}, + [927] = {.lex_state = 16, .external_lex_state = 6}, + [928] = {.lex_state = 16, .external_lex_state = 6}, [929] = {.lex_state = 16, .external_lex_state = 6}, [930] = {.lex_state = 16, .external_lex_state = 6}, - [931] = {.lex_state = 16, .external_lex_state = 6}, - [932] = {.lex_state = 51, .external_lex_state = 2}, - [933] = {.lex_state = 51, .external_lex_state = 2}, + [931] = {.lex_state = 51, .external_lex_state = 2}, + [932] = {.lex_state = 16, .external_lex_state = 6}, + [933] = {.lex_state = 15}, [934] = {.lex_state = 51, .external_lex_state = 2}, [935] = {.lex_state = 51, .external_lex_state = 2}, [936] = {.lex_state = 16, .external_lex_state = 6}, - [937] = {.lex_state = 16, .external_lex_state = 6}, + [937] = {.lex_state = 15}, [938] = {.lex_state = 15}, - [939] = {.lex_state = 15}, - [940] = {.lex_state = 16, .external_lex_state = 6}, + [939] = {.lex_state = 51, .external_lex_state = 2}, + [940] = {.lex_state = 15}, [941] = {.lex_state = 16, .external_lex_state = 6}, [942] = {.lex_state = 16, .external_lex_state = 6}, [943] = {.lex_state = 16, .external_lex_state = 6}, - [944] = {.lex_state = 16, .external_lex_state = 6}, - [945] = {.lex_state = 16}, - [946] = {.lex_state = 16}, - [947] = {.lex_state = 16}, - [948] = {.lex_state = 16}, - [949] = {.lex_state = 16}, - [950] = {.lex_state = 16}, - [951] = {.lex_state = 16}, + [944] = {.lex_state = 15}, + [945] = {.lex_state = 16, .external_lex_state = 6}, + [946] = {.lex_state = 15}, + [947] = {.lex_state = 16, .external_lex_state = 6}, + [948] = {.lex_state = 15}, + [949] = {.lex_state = 15}, + [950] = {.lex_state = 16, .external_lex_state = 6}, + [951] = {.lex_state = 16, .external_lex_state = 6}, [952] = {.lex_state = 16}, [953] = {.lex_state = 16}, [954] = {.lex_state = 16}, @@ -7366,7 +7432,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [961] = {.lex_state = 16}, [962] = {.lex_state = 16}, [963] = {.lex_state = 16}, - [964] = {.lex_state = 51, .external_lex_state = 2}, + [964] = {.lex_state = 16}, [965] = {.lex_state = 16}, [966] = {.lex_state = 16}, [967] = {.lex_state = 16}, @@ -7381,680 +7447,680 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [976] = {.lex_state = 16}, [977] = {.lex_state = 16}, [978] = {.lex_state = 16}, - [979] = {.lex_state = 51, .external_lex_state = 2}, - [980] = {.lex_state = 51, .external_lex_state = 2}, - [981] = {.lex_state = 16}, + [979] = {.lex_state = 16}, + [980] = {.lex_state = 16}, + [981] = {.lex_state = 51, .external_lex_state = 2}, [982] = {.lex_state = 51, .external_lex_state = 2}, - [983] = {.lex_state = 16}, - [984] = {.lex_state = 51, .external_lex_state = 2}, - [985] = {.lex_state = 51, .external_lex_state = 2}, - [986] = {.lex_state = 51, .external_lex_state = 2}, + [983] = {.lex_state = 51, .external_lex_state = 2}, + [984] = {.lex_state = 16}, + [985] = {.lex_state = 16}, + [986] = {.lex_state = 16}, [987] = {.lex_state = 51, .external_lex_state = 2}, - [988] = {.lex_state = 51, .external_lex_state = 2}, - [989] = {.lex_state = 51}, - [990] = {.lex_state = 0}, - [991] = {.lex_state = 51}, - [992] = {.lex_state = 0}, - [993] = {.lex_state = 51}, + [988] = {.lex_state = 16}, + [989] = {.lex_state = 16}, + [990] = {.lex_state = 16}, + [991] = {.lex_state = 51, .external_lex_state = 2}, + [992] = {.lex_state = 51, .external_lex_state = 2}, + [993] = {.lex_state = 51, .external_lex_state = 2}, [994] = {.lex_state = 51, .external_lex_state = 2}, - [995] = {.lex_state = 14}, - [996] = {.lex_state = 51, .external_lex_state = 2}, + [995] = {.lex_state = 51, .external_lex_state = 2}, + [996] = {.lex_state = 0}, [997] = {.lex_state = 51}, - [998] = {.lex_state = 51}, + [998] = {.lex_state = 0}, [999] = {.lex_state = 51}, - [1000] = {.lex_state = 16}, - [1001] = {.lex_state = 16}, - [1002] = {.lex_state = 0, .external_lex_state = 6}, - [1003] = {.lex_state = 0, .external_lex_state = 6}, - [1004] = {.lex_state = 51}, + [1000] = {.lex_state = 51}, + [1001] = {.lex_state = 0, .external_lex_state = 6}, + [1002] = {.lex_state = 51}, + [1003] = {.lex_state = 14}, + [1004] = {.lex_state = 14}, [1005] = {.lex_state = 51}, - [1006] = {.lex_state = 14}, - [1007] = {.lex_state = 51}, - [1008] = {.lex_state = 51, .external_lex_state = 2}, + [1006] = {.lex_state = 51, .external_lex_state = 2}, + [1007] = {.lex_state = 51, .external_lex_state = 2}, + [1008] = {.lex_state = 0, .external_lex_state = 6}, [1009] = {.lex_state = 51}, - [1010] = {.lex_state = 51}, - [1011] = {.lex_state = 51}, - [1012] = {.lex_state = 16}, - [1013] = {.lex_state = 51}, + [1010] = {.lex_state = 51, .external_lex_state = 2}, + [1011] = {.lex_state = 16}, + [1012] = {.lex_state = 51}, + [1013] = {.lex_state = 16}, [1014] = {.lex_state = 51}, [1015] = {.lex_state = 51}, [1016] = {.lex_state = 51}, - [1017] = {.lex_state = 51}, + [1017] = {.lex_state = 16}, [1018] = {.lex_state = 51}, [1019] = {.lex_state = 51}, [1020] = {.lex_state = 51}, - [1021] = {.lex_state = 51, .external_lex_state = 2}, - [1022] = {.lex_state = 0}, + [1021] = {.lex_state = 51}, + [1022] = {.lex_state = 51}, [1023] = {.lex_state = 51}, [1024] = {.lex_state = 51}, [1025] = {.lex_state = 51}, - [1026] = {.lex_state = 0}, - [1027] = {.lex_state = 0}, + [1026] = {.lex_state = 51}, + [1027] = {.lex_state = 51}, [1028] = {.lex_state = 0}, - [1029] = {.lex_state = 0}, + [1029] = {.lex_state = 51, .external_lex_state = 2}, [1030] = {.lex_state = 51}, - [1031] = {.lex_state = 51}, - [1032] = {.lex_state = 16}, - [1033] = {.lex_state = 18, .external_lex_state = 11}, + [1031] = {.lex_state = 0}, + [1032] = {.lex_state = 51}, + [1033] = {.lex_state = 0}, [1034] = {.lex_state = 51}, - [1035] = {.lex_state = 18, .external_lex_state = 11}, - [1036] = {.lex_state = 18, .external_lex_state = 11}, - [1037] = {.lex_state = 18, .external_lex_state = 11}, - [1038] = {.lex_state = 16}, - [1039] = {.lex_state = 51, .external_lex_state = 8}, - [1040] = {.lex_state = 51, .external_lex_state = 9}, - [1041] = {.lex_state = 0}, + [1035] = {.lex_state = 0}, + [1036] = {.lex_state = 0}, + [1037] = {.lex_state = 51}, + [1038] = {.lex_state = 51}, + [1039] = {.lex_state = 16}, + [1040] = {.lex_state = 18, .external_lex_state = 11}, + [1041] = {.lex_state = 51}, [1042] = {.lex_state = 16}, - [1043] = {.lex_state = 18, .external_lex_state = 11}, + [1043] = {.lex_state = 51, .external_lex_state = 8}, [1044] = {.lex_state = 18, .external_lex_state = 11}, [1045] = {.lex_state = 18, .external_lex_state = 11}, - [1046] = {.lex_state = 51}, - [1047] = {.lex_state = 18, .external_lex_state = 11}, - [1048] = {.lex_state = 18, .external_lex_state = 11}, - [1049] = {.lex_state = 16}, + [1046] = {.lex_state = 18, .external_lex_state = 11}, + [1047] = {.lex_state = 51}, + [1048] = {.lex_state = 0}, + [1049] = {.lex_state = 18, .external_lex_state = 11}, [1050] = {.lex_state = 18, .external_lex_state = 11}, [1051] = {.lex_state = 18, .external_lex_state = 11}, [1052] = {.lex_state = 18, .external_lex_state = 11}, - [1053] = {.lex_state = 18, .external_lex_state = 11}, + [1053] = {.lex_state = 16}, [1054] = {.lex_state = 18, .external_lex_state = 11}, [1055] = {.lex_state = 18, .external_lex_state = 11}, [1056] = {.lex_state = 18, .external_lex_state = 11}, [1057] = {.lex_state = 18, .external_lex_state = 11}, [1058] = {.lex_state = 18, .external_lex_state = 11}, [1059] = {.lex_state = 18, .external_lex_state = 11}, - [1060] = {.lex_state = 51}, - [1061] = {.lex_state = 51}, - [1062] = {.lex_state = 0}, + [1060] = {.lex_state = 18, .external_lex_state = 11}, + [1061] = {.lex_state = 18, .external_lex_state = 11}, + [1062] = {.lex_state = 18, .external_lex_state = 11}, [1063] = {.lex_state = 51}, - [1064] = {.lex_state = 0}, - [1065] = {.lex_state = 51}, - [1066] = {.lex_state = 0}, - [1067] = {.lex_state = 0}, - [1068] = {.lex_state = 0}, + [1064] = {.lex_state = 16}, + [1065] = {.lex_state = 18, .external_lex_state = 11}, + [1066] = {.lex_state = 18, .external_lex_state = 11}, + [1067] = {.lex_state = 51}, + [1068] = {.lex_state = 51, .external_lex_state = 9}, [1069] = {.lex_state = 0}, - [1070] = {.lex_state = 51}, + [1070] = {.lex_state = 0}, [1071] = {.lex_state = 51}, - [1072] = {.lex_state = 51}, + [1072] = {.lex_state = 0}, [1073] = {.lex_state = 0}, [1074] = {.lex_state = 0}, [1075] = {.lex_state = 0}, - [1076] = {.lex_state = 0}, - [1077] = {.lex_state = 51}, + [1076] = {.lex_state = 51}, + [1077] = {.lex_state = 0}, [1078] = {.lex_state = 51}, - [1079] = {.lex_state = 0}, + [1079] = {.lex_state = 51}, [1080] = {.lex_state = 0}, - [1081] = {.lex_state = 0}, - [1082] = {.lex_state = 51}, + [1081] = {.lex_state = 51}, + [1082] = {.lex_state = 0}, [1083] = {.lex_state = 0}, [1084] = {.lex_state = 0}, - [1085] = {.lex_state = 0}, + [1085] = {.lex_state = 51}, [1086] = {.lex_state = 0}, [1087] = {.lex_state = 0}, - [1088] = {.lex_state = 0}, + [1088] = {.lex_state = 51}, [1089] = {.lex_state = 51}, [1090] = {.lex_state = 0}, - [1091] = {.lex_state = 51}, + [1091] = {.lex_state = 0}, [1092] = {.lex_state = 0}, - [1093] = {.lex_state = 14}, + [1093] = {.lex_state = 0}, [1094] = {.lex_state = 0}, - [1095] = {.lex_state = 14}, + [1095] = {.lex_state = 0}, [1096] = {.lex_state = 51}, - [1097] = {.lex_state = 51}, + [1097] = {.lex_state = 0}, [1098] = {.lex_state = 0}, [1099] = {.lex_state = 0}, [1100] = {.lex_state = 0}, [1101] = {.lex_state = 51}, [1102] = {.lex_state = 51}, [1103] = {.lex_state = 14}, - [1104] = {.lex_state = 14}, - [1105] = {.lex_state = 14}, - [1106] = {.lex_state = 14}, + [1104] = {.lex_state = 0}, + [1105] = {.lex_state = 51}, + [1106] = {.lex_state = 0}, [1107] = {.lex_state = 14}, - [1108] = {.lex_state = 14}, - [1109] = {.lex_state = 0, .external_lex_state = 6}, + [1108] = {.lex_state = 0}, + [1109] = {.lex_state = 51}, [1110] = {.lex_state = 51}, - [1111] = {.lex_state = 0}, - [1112] = {.lex_state = 14}, + [1111] = {.lex_state = 51}, + [1112] = {.lex_state = 0, .external_lex_state = 6}, [1113] = {.lex_state = 0}, [1114] = {.lex_state = 51}, - [1115] = {.lex_state = 51}, + [1115] = {.lex_state = 0, .external_lex_state = 6}, [1116] = {.lex_state = 51}, [1117] = {.lex_state = 51}, - [1118] = {.lex_state = 0}, - [1119] = {.lex_state = 51}, - [1120] = {.lex_state = 51}, + [1118] = {.lex_state = 0, .external_lex_state = 6}, + [1119] = {.lex_state = 18, .external_lex_state = 11}, + [1120] = {.lex_state = 14}, [1121] = {.lex_state = 0, .external_lex_state = 6}, - [1122] = {.lex_state = 0, .external_lex_state = 6}, + [1122] = {.lex_state = 0}, [1123] = {.lex_state = 0, .external_lex_state = 6}, [1124] = {.lex_state = 51}, - [1125] = {.lex_state = 14}, - [1126] = {.lex_state = 51}, + [1125] = {.lex_state = 51}, + [1126] = {.lex_state = 0, .external_lex_state = 6}, [1127] = {.lex_state = 51}, - [1128] = {.lex_state = 0}, - [1129] = {.lex_state = 14}, + [1128] = {.lex_state = 51}, + [1129] = {.lex_state = 0, .external_lex_state = 6}, [1130] = {.lex_state = 51}, - [1131] = {.lex_state = 51}, + [1131] = {.lex_state = 14}, [1132] = {.lex_state = 51}, - [1133] = {.lex_state = 18, .external_lex_state = 11}, + [1133] = {.lex_state = 51}, [1134] = {.lex_state = 51}, - [1135] = {.lex_state = 0, .external_lex_state = 6}, - [1136] = {.lex_state = 0}, - [1137] = {.lex_state = 51}, + [1135] = {.lex_state = 0}, + [1136] = {.lex_state = 51}, + [1137] = {.lex_state = 0, .external_lex_state = 6}, [1138] = {.lex_state = 51}, - [1139] = {.lex_state = 16}, + [1139] = {.lex_state = 0, .external_lex_state = 6}, [1140] = {.lex_state = 51}, - [1141] = {.lex_state = 0, .external_lex_state = 6}, + [1141] = {.lex_state = 51}, [1142] = {.lex_state = 51}, [1143] = {.lex_state = 51}, - [1144] = {.lex_state = 0, .external_lex_state = 6}, - [1145] = {.lex_state = 0, .external_lex_state = 6}, + [1144] = {.lex_state = 51}, + [1145] = {.lex_state = 14}, [1146] = {.lex_state = 0}, - [1147] = {.lex_state = 18, .external_lex_state = 11}, - [1148] = {.lex_state = 0}, - [1149] = {.lex_state = 51}, + [1147] = {.lex_state = 0, .external_lex_state = 6}, + [1148] = {.lex_state = 51}, + [1149] = {.lex_state = 18, .external_lex_state = 11}, [1150] = {.lex_state = 51}, [1151] = {.lex_state = 51}, - [1152] = {.lex_state = 51}, + [1152] = {.lex_state = 14}, [1153] = {.lex_state = 51}, [1154] = {.lex_state = 51}, - [1155] = {.lex_state = 0}, - [1156] = {.lex_state = 0, .external_lex_state = 6}, + [1155] = {.lex_state = 51}, + [1156] = {.lex_state = 51}, [1157] = {.lex_state = 51}, - [1158] = {.lex_state = 0, .external_lex_state = 6}, - [1159] = {.lex_state = 51}, - [1160] = {.lex_state = 51}, - [1161] = {.lex_state = 51}, - [1162] = {.lex_state = 0}, - [1163] = {.lex_state = 0, .external_lex_state = 6}, + [1158] = {.lex_state = 51}, + [1159] = {.lex_state = 14}, + [1160] = {.lex_state = 16}, + [1161] = {.lex_state = 0, .external_lex_state = 6}, + [1162] = {.lex_state = 14}, + [1163] = {.lex_state = 51}, [1164] = {.lex_state = 14}, [1165] = {.lex_state = 14}, [1166] = {.lex_state = 51}, - [1167] = {.lex_state = 51}, + [1167] = {.lex_state = 14}, [1168] = {.lex_state = 14}, - [1169] = {.lex_state = 0}, - [1170] = {.lex_state = 0}, + [1169] = {.lex_state = 14}, + [1170] = {.lex_state = 14}, [1171] = {.lex_state = 0}, - [1172] = {.lex_state = 51}, + [1172] = {.lex_state = 0}, [1173] = {.lex_state = 0}, [1174] = {.lex_state = 0}, - [1175] = {.lex_state = 0, .external_lex_state = 6}, + [1175] = {.lex_state = 0}, [1176] = {.lex_state = 51}, - [1177] = {.lex_state = 0, .external_lex_state = 6}, + [1177] = {.lex_state = 51}, [1178] = {.lex_state = 0}, - [1179] = {.lex_state = 0, .external_lex_state = 6}, - [1180] = {.lex_state = 0, .external_lex_state = 6}, - [1181] = {.lex_state = 0}, - [1182] = {.lex_state = 0}, - [1183] = {.lex_state = 14}, - [1184] = {.lex_state = 51}, - [1185] = {.lex_state = 0, .external_lex_state = 6}, - [1186] = {.lex_state = 51}, + [1179] = {.lex_state = 0}, + [1180] = {.lex_state = 0}, + [1181] = {.lex_state = 0, .external_lex_state = 6}, + [1182] = {.lex_state = 51}, + [1183] = {.lex_state = 0}, + [1184] = {.lex_state = 0}, + [1185] = {.lex_state = 0}, + [1186] = {.lex_state = 0}, [1187] = {.lex_state = 0}, [1188] = {.lex_state = 51}, - [1189] = {.lex_state = 0}, - [1190] = {.lex_state = 0}, + [1189] = {.lex_state = 51}, + [1190] = {.lex_state = 51}, [1191] = {.lex_state = 0, .external_lex_state = 6}, [1192] = {.lex_state = 51}, [1193] = {.lex_state = 51}, - [1194] = {.lex_state = 51}, - [1195] = {.lex_state = 51}, - [1196] = {.lex_state = 14}, - [1197] = {.lex_state = 0, .external_lex_state = 6}, - [1198] = {.lex_state = 0}, - [1199] = {.lex_state = 0, .external_lex_state = 6}, - [1200] = {.lex_state = 51}, - [1201] = {.lex_state = 16}, - [1202] = {.lex_state = 0, .external_lex_state = 6}, + [1194] = {.lex_state = 0}, + [1195] = {.lex_state = 0}, + [1196] = {.lex_state = 0}, + [1197] = {.lex_state = 51}, + [1198] = {.lex_state = 51}, + [1199] = {.lex_state = 0}, + [1200] = {.lex_state = 0}, + [1201] = {.lex_state = 51}, + [1202] = {.lex_state = 0}, [1203] = {.lex_state = 0}, - [1204] = {.lex_state = 51}, - [1205] = {.lex_state = 51}, + [1204] = {.lex_state = 0}, + [1205] = {.lex_state = 0}, [1206] = {.lex_state = 0}, - [1207] = {.lex_state = 51}, + [1207] = {.lex_state = 0}, [1208] = {.lex_state = 51}, [1209] = {.lex_state = 51}, - [1210] = {.lex_state = 51}, + [1210] = {.lex_state = 0, .external_lex_state = 6}, [1211] = {.lex_state = 0}, [1212] = {.lex_state = 0}, - [1213] = {.lex_state = 0, .external_lex_state = 6}, - [1214] = {.lex_state = 0}, - [1215] = {.lex_state = 14}, - [1216] = {.lex_state = 16}, - [1217] = {.lex_state = 18, .external_lex_state = 11}, - [1218] = {.lex_state = 18, .external_lex_state = 11}, - [1219] = {.lex_state = 16, .external_lex_state = 6}, - [1220] = {.lex_state = 51}, + [1213] = {.lex_state = 16}, + [1214] = {.lex_state = 51}, + [1215] = {.lex_state = 0}, + [1216] = {.lex_state = 0}, + [1217] = {.lex_state = 0}, + [1218] = {.lex_state = 0}, + [1219] = {.lex_state = 0, .external_lex_state = 6}, + [1220] = {.lex_state = 0, .external_lex_state = 6}, [1221] = {.lex_state = 14}, - [1222] = {.lex_state = 51}, - [1223] = {.lex_state = 18, .external_lex_state = 11}, - [1224] = {.lex_state = 0, .external_lex_state = 6}, - [1225] = {.lex_state = 0}, - [1226] = {.lex_state = 0, .external_lex_state = 6}, - [1227] = {.lex_state = 0, .external_lex_state = 6}, - [1228] = {.lex_state = 51}, - [1229] = {.lex_state = 51}, - [1230] = {.lex_state = 51}, + [1222] = {.lex_state = 0}, + [1223] = {.lex_state = 0, .external_lex_state = 6}, + [1224] = {.lex_state = 0}, + [1225] = {.lex_state = 0, .external_lex_state = 6}, + [1226] = {.lex_state = 0}, + [1227] = {.lex_state = 0}, + [1228] = {.lex_state = 0}, + [1229] = {.lex_state = 0}, + [1230] = {.lex_state = 0}, [1231] = {.lex_state = 51}, - [1232] = {.lex_state = 51}, - [1233] = {.lex_state = 16, .external_lex_state = 6}, - [1234] = {.lex_state = 16, .external_lex_state = 6}, - [1235] = {.lex_state = 51}, - [1236] = {.lex_state = 51}, - [1237] = {.lex_state = 51}, + [1232] = {.lex_state = 0}, + [1233] = {.lex_state = 51}, + [1234] = {.lex_state = 0}, + [1235] = {.lex_state = 0, .external_lex_state = 6}, + [1236] = {.lex_state = 0}, + [1237] = {.lex_state = 14}, [1238] = {.lex_state = 0}, - [1239] = {.lex_state = 51}, + [1239] = {.lex_state = 0, .external_lex_state = 6}, [1240] = {.lex_state = 51}, - [1241] = {.lex_state = 16}, - [1242] = {.lex_state = 51}, + [1241] = {.lex_state = 0, .external_lex_state = 6}, + [1242] = {.lex_state = 16, .external_lex_state = 6}, [1243] = {.lex_state = 51}, [1244] = {.lex_state = 51}, - [1245] = {.lex_state = 18, .external_lex_state = 11}, + [1245] = {.lex_state = 16, .external_lex_state = 6}, [1246] = {.lex_state = 51}, - [1247] = {.lex_state = 51}, - [1248] = {.lex_state = 0}, + [1247] = {.lex_state = 0, .external_lex_state = 6}, + [1248] = {.lex_state = 18, .external_lex_state = 11}, [1249] = {.lex_state = 51}, - [1250] = {.lex_state = 0, .external_lex_state = 6}, - [1251] = {.lex_state = 14}, + [1250] = {.lex_state = 51}, + [1251] = {.lex_state = 16}, [1252] = {.lex_state = 18, .external_lex_state = 11}, - [1253] = {.lex_state = 18, .external_lex_state = 11}, + [1253] = {.lex_state = 51}, [1254] = {.lex_state = 51}, [1255] = {.lex_state = 0, .external_lex_state = 6}, - [1256] = {.lex_state = 51}, + [1256] = {.lex_state = 16}, [1257] = {.lex_state = 0}, - [1258] = {.lex_state = 0, .external_lex_state = 6}, - [1259] = {.lex_state = 0}, - [1260] = {.lex_state = 0, .external_lex_state = 6}, - [1261] = {.lex_state = 0}, - [1262] = {.lex_state = 0}, + [1258] = {.lex_state = 0}, + [1259] = {.lex_state = 18, .external_lex_state = 11}, + [1260] = {.lex_state = 18, .external_lex_state = 11}, + [1261] = {.lex_state = 51}, + [1262] = {.lex_state = 16, .external_lex_state = 6}, [1263] = {.lex_state = 51}, - [1264] = {.lex_state = 0}, - [1265] = {.lex_state = 14}, - [1266] = {.lex_state = 0}, + [1264] = {.lex_state = 51}, + [1265] = {.lex_state = 51}, + [1266] = {.lex_state = 51}, [1267] = {.lex_state = 51}, [1268] = {.lex_state = 0}, - [1269] = {.lex_state = 0, .external_lex_state = 6}, - [1270] = {.lex_state = 0}, + [1269] = {.lex_state = 16}, + [1270] = {.lex_state = 14}, [1271] = {.lex_state = 0, .external_lex_state = 6}, - [1272] = {.lex_state = 0}, - [1273] = {.lex_state = 14}, - [1274] = {.lex_state = 0}, - [1275] = {.lex_state = 0, .external_lex_state = 6}, - [1276] = {.lex_state = 0}, + [1272] = {.lex_state = 14}, + [1273] = {.lex_state = 51}, + [1274] = {.lex_state = 14}, + [1275] = {.lex_state = 18, .external_lex_state = 11}, + [1276] = {.lex_state = 51}, [1277] = {.lex_state = 51}, [1278] = {.lex_state = 0, .external_lex_state = 6}, - [1279] = {.lex_state = 0, .external_lex_state = 6}, - [1280] = {.lex_state = 0, .external_lex_state = 6}, - [1281] = {.lex_state = 51}, - [1282] = {.lex_state = 0}, - [1283] = {.lex_state = 10}, - [1284] = {.lex_state = 10}, - [1285] = {.lex_state = 0, .external_lex_state = 6}, - [1286] = {.lex_state = 0}, - [1287] = {.lex_state = 14}, - [1288] = {.lex_state = 10}, - [1289] = {.lex_state = 16, .external_lex_state = 6}, + [1279] = {.lex_state = 51}, + [1280] = {.lex_state = 51}, + [1281] = {.lex_state = 18, .external_lex_state = 11}, + [1282] = {.lex_state = 51}, + [1283] = {.lex_state = 0}, + [1284] = {.lex_state = 0, .external_lex_state = 6}, + [1285] = {.lex_state = 51}, + [1286] = {.lex_state = 0, .external_lex_state = 6}, + [1287] = {.lex_state = 10}, + [1288] = {.lex_state = 0, .external_lex_state = 6}, + [1289] = {.lex_state = 14}, [1290] = {.lex_state = 0, .external_lex_state = 6}, - [1291] = {.lex_state = 0}, - [1292] = {.lex_state = 0, .external_lex_state = 6}, - [1293] = {.lex_state = 0}, - [1294] = {.lex_state = 51}, - [1295] = {.lex_state = 51}, - [1296] = {.lex_state = 51}, + [1291] = {.lex_state = 51}, + [1292] = {.lex_state = 0}, + [1293] = {.lex_state = 16, .external_lex_state = 6}, + [1294] = {.lex_state = 0}, + [1295] = {.lex_state = 0, .external_lex_state = 6}, + [1296] = {.lex_state = 14}, [1297] = {.lex_state = 0}, [1298] = {.lex_state = 0}, [1299] = {.lex_state = 0, .external_lex_state = 6}, - [1300] = {.lex_state = 0}, - [1301] = {.lex_state = 0}, - [1302] = {.lex_state = 14}, - [1303] = {.lex_state = 0, .external_lex_state = 6}, - [1304] = {.lex_state = 0}, - [1305] = {.lex_state = 0}, - [1306] = {.lex_state = 0, .external_lex_state = 6}, - [1307] = {.lex_state = 0}, - [1308] = {.lex_state = 51}, - [1309] = {.lex_state = 0, .external_lex_state = 6}, - [1310] = {.lex_state = 14}, + [1300] = {.lex_state = 0, .external_lex_state = 6}, + [1301] = {.lex_state = 14}, + [1302] = {.lex_state = 0, .external_lex_state = 6}, + [1303] = {.lex_state = 0}, + [1304] = {.lex_state = 0, .external_lex_state = 6}, + [1305] = {.lex_state = 10}, + [1306] = {.lex_state = 0}, + [1307] = {.lex_state = 51}, + [1308] = {.lex_state = 0}, + [1309] = {.lex_state = 0}, + [1310] = {.lex_state = 0}, [1311] = {.lex_state = 0}, - [1312] = {.lex_state = 0}, - [1313] = {.lex_state = 0}, - [1314] = {.lex_state = 0}, - [1315] = {.lex_state = 0}, + [1312] = {.lex_state = 51}, + [1313] = {.lex_state = 0, .external_lex_state = 6}, + [1314] = {.lex_state = 51}, + [1315] = {.lex_state = 10}, [1316] = {.lex_state = 0, .external_lex_state = 6}, - [1317] = {.lex_state = 51, .external_lex_state = 8}, - [1318] = {.lex_state = 51, .external_lex_state = 9}, + [1317] = {.lex_state = 0}, + [1318] = {.lex_state = 0}, [1319] = {.lex_state = 0, .external_lex_state = 6}, - [1320] = {.lex_state = 0, .external_lex_state = 6}, + [1320] = {.lex_state = 0}, [1321] = {.lex_state = 0}, - [1322] = {.lex_state = 51}, - [1323] = {.lex_state = 0}, - [1324] = {.lex_state = 0, .external_lex_state = 6}, + [1322] = {.lex_state = 0, .external_lex_state = 6}, + [1323] = {.lex_state = 0, .external_lex_state = 6}, + [1324] = {.lex_state = 0}, [1325] = {.lex_state = 51}, [1326] = {.lex_state = 0, .external_lex_state = 6}, - [1327] = {.lex_state = 0}, - [1328] = {.lex_state = 0}, - [1329] = {.lex_state = 0}, - [1330] = {.lex_state = 0}, + [1327] = {.lex_state = 0, .external_lex_state = 6}, + [1328] = {.lex_state = 0, .external_lex_state = 6}, + [1329] = {.lex_state = 0, .external_lex_state = 6}, + [1330] = {.lex_state = 14}, [1331] = {.lex_state = 51}, [1332] = {.lex_state = 0, .external_lex_state = 6}, - [1333] = {.lex_state = 0, .external_lex_state = 6}, - [1334] = {.lex_state = 51}, - [1335] = {.lex_state = 0}, - [1336] = {.lex_state = 16}, - [1337] = {.lex_state = 0, .external_lex_state = 6}, - [1338] = {.lex_state = 51}, - [1339] = {.lex_state = 0}, - [1340] = {.lex_state = 0, .external_lex_state = 6}, - [1341] = {.lex_state = 51}, - [1342] = {.lex_state = 51}, - [1343] = {.lex_state = 0, .external_lex_state = 6}, - [1344] = {.lex_state = 0, .external_lex_state = 6}, - [1345] = {.lex_state = 0}, - [1346] = {.lex_state = 51}, - [1347] = {.lex_state = 51}, - [1348] = {.lex_state = 0, .external_lex_state = 6}, - [1349] = {.lex_state = 51}, + [1333] = {.lex_state = 51}, + [1334] = {.lex_state = 0}, + [1335] = {.lex_state = 0, .external_lex_state = 6}, + [1336] = {.lex_state = 0, .external_lex_state = 6}, + [1337] = {.lex_state = 0}, + [1338] = {.lex_state = 0}, + [1339] = {.lex_state = 0, .external_lex_state = 6}, + [1340] = {.lex_state = 0}, + [1341] = {.lex_state = 0}, + [1342] = {.lex_state = 0}, + [1343] = {.lex_state = 16}, + [1344] = {.lex_state = 0}, + [1345] = {.lex_state = 0, .external_lex_state = 6}, + [1346] = {.lex_state = 0, .external_lex_state = 6}, + [1347] = {.lex_state = 0}, + [1348] = {.lex_state = 51}, + [1349] = {.lex_state = 0}, [1350] = {.lex_state = 51}, - [1351] = {.lex_state = 51}, - [1352] = {.lex_state = 51}, - [1353] = {.lex_state = 0, .external_lex_state = 6}, - [1354] = {.lex_state = 0, .external_lex_state = 6}, - [1355] = {.lex_state = 0, .external_lex_state = 6}, - [1356] = {.lex_state = 0}, - [1357] = {.lex_state = 0, .external_lex_state = 6}, - [1358] = {.lex_state = 0, .external_lex_state = 6}, - [1359] = {.lex_state = 0, .external_lex_state = 6}, - [1360] = {.lex_state = 0, .external_lex_state = 6}, - [1361] = {.lex_state = 51}, - [1362] = {.lex_state = 16}, - [1363] = {.lex_state = 0}, + [1351] = {.lex_state = 0, .external_lex_state = 6}, + [1352] = {.lex_state = 16}, + [1353] = {.lex_state = 0}, + [1354] = {.lex_state = 0}, + [1355] = {.lex_state = 0}, + [1356] = {.lex_state = 14}, + [1357] = {.lex_state = 0}, + [1358] = {.lex_state = 51}, + [1359] = {.lex_state = 51}, + [1360] = {.lex_state = 0}, + [1361] = {.lex_state = 0}, + [1362] = {.lex_state = 0}, + [1363] = {.lex_state = 51}, [1364] = {.lex_state = 51}, - [1365] = {.lex_state = 0, .external_lex_state = 6}, - [1366] = {.lex_state = 0}, + [1365] = {.lex_state = 0}, + [1366] = {.lex_state = 0, .external_lex_state = 6}, [1367] = {.lex_state = 0}, [1368] = {.lex_state = 0, .external_lex_state = 6}, - [1369] = {.lex_state = 0}, - [1370] = {.lex_state = 0}, - [1371] = {.lex_state = 0}, - [1372] = {.lex_state = 0}, - [1373] = {.lex_state = 0, .external_lex_state = 6}, + [1369] = {.lex_state = 51, .external_lex_state = 9}, + [1370] = {.lex_state = 51}, + [1371] = {.lex_state = 51}, + [1372] = {.lex_state = 0, .external_lex_state = 6}, + [1373] = {.lex_state = 51, .external_lex_state = 8}, [1374] = {.lex_state = 0}, [1375] = {.lex_state = 0}, - [1376] = {.lex_state = 0}, - [1377] = {.lex_state = 0}, - [1378] = {.lex_state = 0}, - [1379] = {.lex_state = 51}, - [1380] = {.lex_state = 10}, + [1376] = {.lex_state = 51}, + [1377] = {.lex_state = 51}, + [1378] = {.lex_state = 51}, + [1379] = {.lex_state = 0}, + [1380] = {.lex_state = 0, .external_lex_state = 6}, [1381] = {.lex_state = 0}, - [1382] = {.lex_state = 0}, - [1383] = {.lex_state = 0}, + [1382] = {.lex_state = 51}, + [1383] = {.lex_state = 51}, [1384] = {.lex_state = 0}, - [1385] = {.lex_state = 51}, - [1386] = {.lex_state = 0}, + [1385] = {.lex_state = 0}, + [1386] = {.lex_state = 51}, [1387] = {.lex_state = 0}, - [1388] = {.lex_state = 0}, + [1388] = {.lex_state = 0, .external_lex_state = 6}, [1389] = {.lex_state = 0}, - [1390] = {.lex_state = 51}, - [1391] = {.lex_state = 51}, - [1392] = {.lex_state = 0}, + [1390] = {.lex_state = 0, .external_lex_state = 6}, + [1391] = {.lex_state = 0}, + [1392] = {.lex_state = 0, .external_lex_state = 6}, [1393] = {.lex_state = 0, .external_lex_state = 6}, - [1394] = {.lex_state = 51}, - [1395] = {.lex_state = 0}, + [1394] = {.lex_state = 0, .external_lex_state = 6}, + [1395] = {.lex_state = 51}, [1396] = {.lex_state = 0}, [1397] = {.lex_state = 0}, [1398] = {.lex_state = 0}, - [1399] = {.lex_state = 0}, - [1400] = {.lex_state = 0}, - [1401] = {.lex_state = 0}, - [1402] = {.lex_state = 0}, + [1399] = {.lex_state = 0, .external_lex_state = 6}, + [1400] = {.lex_state = 51}, + [1401] = {.lex_state = 0, .external_lex_state = 6}, + [1402] = {.lex_state = 0, .external_lex_state = 6}, [1403] = {.lex_state = 0}, [1404] = {.lex_state = 0, .external_lex_state = 6}, [1405] = {.lex_state = 0}, - [1406] = {.lex_state = 0, .external_lex_state = 6}, - [1407] = {.lex_state = 0}, - [1408] = {.lex_state = 0}, + [1406] = {.lex_state = 51}, + [1407] = {.lex_state = 51}, + [1408] = {.lex_state = 51}, [1409] = {.lex_state = 0}, - [1410] = {.lex_state = 0}, - [1411] = {.lex_state = 0}, + [1410] = {.lex_state = 51}, + [1411] = {.lex_state = 0, .external_lex_state = 6}, [1412] = {.lex_state = 0}, [1413] = {.lex_state = 0}, [1414] = {.lex_state = 0}, [1415] = {.lex_state = 0}, [1416] = {.lex_state = 0}, - [1417] = {.lex_state = 0}, + [1417] = {.lex_state = 51}, [1418] = {.lex_state = 0}, - [1419] = {.lex_state = 14}, - [1420] = {.lex_state = 0, .external_lex_state = 6}, - [1421] = {.lex_state = 0, .external_lex_state = 6}, - [1422] = {.lex_state = 0}, + [1419] = {.lex_state = 0}, + [1420] = {.lex_state = 0}, + [1421] = {.lex_state = 0}, + [1422] = {.lex_state = 51}, [1423] = {.lex_state = 0}, [1424] = {.lex_state = 0}, - [1425] = {.lex_state = 0}, + [1425] = {.lex_state = 0, .external_lex_state = 6}, [1426] = {.lex_state = 0}, [1427] = {.lex_state = 0}, - [1428] = {.lex_state = 0}, + [1428] = {.lex_state = 0, .external_lex_state = 6}, [1429] = {.lex_state = 0}, [1430] = {.lex_state = 0}, - [1431] = {.lex_state = 0}, + [1431] = {.lex_state = 10}, [1432] = {.lex_state = 0}, [1433] = {.lex_state = 0}, - [1434] = {.lex_state = 51}, - [1435] = {.lex_state = 0}, - [1436] = {.lex_state = 0}, - [1437] = {.lex_state = 0}, + [1434] = {.lex_state = 0}, + [1435] = {.lex_state = 14}, + [1436] = {.lex_state = 0, .external_lex_state = 6}, + [1437] = {.lex_state = 51}, [1438] = {.lex_state = 0}, [1439] = {.lex_state = 0}, [1440] = {.lex_state = 0}, [1441] = {.lex_state = 0}, - [1442] = {.lex_state = 51}, + [1442] = {.lex_state = 0, .external_lex_state = 6}, [1443] = {.lex_state = 0}, - [1444] = {.lex_state = 51}, - [1445] = {.lex_state = 51}, - [1446] = {.lex_state = 51}, - [1447] = {.lex_state = 51}, + [1444] = {.lex_state = 0}, + [1445] = {.lex_state = 0}, + [1446] = {.lex_state = 0, .external_lex_state = 6}, + [1447] = {.lex_state = 0}, [1448] = {.lex_state = 0}, [1449] = {.lex_state = 0}, [1450] = {.lex_state = 0}, - [1451] = {.lex_state = 0}, - [1452] = {.lex_state = 51}, - [1453] = {.lex_state = 51}, + [1451] = {.lex_state = 16}, + [1452] = {.lex_state = 0}, + [1453] = {.lex_state = 0}, [1454] = {.lex_state = 0}, - [1455] = {.lex_state = 10}, - [1456] = {.lex_state = 51}, - [1457] = {.lex_state = 14}, - [1458] = {.lex_state = 14}, + [1455] = {.lex_state = 0}, + [1456] = {.lex_state = 0}, + [1457] = {.lex_state = 0}, + [1458] = {.lex_state = 0}, [1459] = {.lex_state = 0}, [1460] = {.lex_state = 0}, [1461] = {.lex_state = 0}, [1462] = {.lex_state = 0}, - [1463] = {.lex_state = 0, .external_lex_state = 6}, - [1464] = {.lex_state = 51}, - [1465] = {.lex_state = 51}, + [1463] = {.lex_state = 10}, + [1464] = {.lex_state = 0}, + [1465] = {.lex_state = 0}, [1466] = {.lex_state = 0}, [1467] = {.lex_state = 0}, [1468] = {.lex_state = 0}, [1469] = {.lex_state = 0}, - [1470] = {.lex_state = 0, .external_lex_state = 6}, - [1471] = {.lex_state = 51}, + [1470] = {.lex_state = 0}, + [1471] = {.lex_state = 0}, [1472] = {.lex_state = 0}, [1473] = {.lex_state = 0}, - [1474] = {.lex_state = 0}, - [1475] = {.lex_state = 0, .external_lex_state = 6}, + [1474] = {.lex_state = 51}, + [1475] = {.lex_state = 0}, [1476] = {.lex_state = 0}, [1477] = {.lex_state = 0}, - [1478] = {.lex_state = 16}, - [1479] = {.lex_state = 51}, + [1478] = {.lex_state = 51}, + [1479] = {.lex_state = 0}, [1480] = {.lex_state = 0}, - [1481] = {.lex_state = 0}, - [1482] = {.lex_state = 10}, + [1481] = {.lex_state = 51}, + [1482] = {.lex_state = 0}, [1483] = {.lex_state = 0}, [1484] = {.lex_state = 0}, - [1485] = {.lex_state = 0}, - [1486] = {.lex_state = 0, .external_lex_state = 6}, - [1487] = {.lex_state = 0}, + [1485] = {.lex_state = 0, .external_lex_state = 6}, + [1486] = {.lex_state = 0}, + [1487] = {.lex_state = 51}, [1488] = {.lex_state = 0}, [1489] = {.lex_state = 0}, [1490] = {.lex_state = 0}, - [1491] = {.lex_state = 0}, - [1492] = {.lex_state = 0}, - [1493] = {.lex_state = 51}, - [1494] = {.lex_state = 14}, - [1495] = {.lex_state = 0}, + [1491] = {.lex_state = 51}, + [1492] = {.lex_state = 14}, + [1493] = {.lex_state = 0}, + [1494] = {.lex_state = 51}, + [1495] = {.lex_state = 51}, [1496] = {.lex_state = 0}, - [1497] = {.lex_state = 10}, + [1497] = {.lex_state = 0}, [1498] = {.lex_state = 0}, - [1499] = {.lex_state = 0}, + [1499] = {.lex_state = 10}, [1500] = {.lex_state = 0}, - [1501] = {.lex_state = 51}, - [1502] = {.lex_state = 10}, + [1501] = {.lex_state = 0}, + [1502] = {.lex_state = 14}, [1503] = {.lex_state = 0}, [1504] = {.lex_state = 0}, [1505] = {.lex_state = 0}, - [1506] = {.lex_state = 51}, - [1507] = {.lex_state = 0, .external_lex_state = 6}, - [1508] = {.lex_state = 0}, - [1509] = {.lex_state = 0}, - [1510] = {.lex_state = 0}, - [1511] = {.lex_state = 17}, - [1512] = {.lex_state = 0}, - [1513] = {.lex_state = 17}, - [1514] = {.lex_state = 0, .external_lex_state = 6}, + [1506] = {.lex_state = 0}, + [1507] = {.lex_state = 51}, + [1508] = {.lex_state = 10}, + [1509] = {.lex_state = 0, .external_lex_state = 6}, + [1510] = {.lex_state = 51}, + [1511] = {.lex_state = 0}, + [1512] = {.lex_state = 51}, + [1513] = {.lex_state = 0}, + [1514] = {.lex_state = 0}, [1515] = {.lex_state = 0}, - [1516] = {.lex_state = 0}, - [1517] = {.lex_state = 0, .external_lex_state = 6}, - [1518] = {.lex_state = 0, .external_lex_state = 6}, + [1516] = {.lex_state = 51}, + [1517] = {.lex_state = 10}, + [1518] = {.lex_state = 0}, [1519] = {.lex_state = 0}, [1520] = {.lex_state = 51}, [1521] = {.lex_state = 0}, - [1522] = {.lex_state = 0}, - [1523] = {.lex_state = 0, .external_lex_state = 6}, - [1524] = {.lex_state = 0}, - [1525] = {.lex_state = 0, .external_lex_state = 6}, + [1522] = {.lex_state = 51}, + [1523] = {.lex_state = 0}, + [1524] = {.lex_state = 51}, + [1525] = {.lex_state = 0}, [1526] = {.lex_state = 0}, - [1527] = {.lex_state = 0, .external_lex_state = 6}, - [1528] = {.lex_state = 0, .external_lex_state = 6}, - [1529] = {.lex_state = 0}, - [1530] = {.lex_state = 0, .external_lex_state = 6}, - [1531] = {.lex_state = 0, .external_lex_state = 6}, - [1532] = {.lex_state = 0, .external_lex_state = 6}, - [1533] = {.lex_state = 0, .external_lex_state = 6}, + [1527] = {.lex_state = 14}, + [1528] = {.lex_state = 0}, + [1529] = {.lex_state = 0, .external_lex_state = 6}, + [1530] = {.lex_state = 0}, + [1531] = {.lex_state = 0}, + [1532] = {.lex_state = 0}, + [1533] = {.lex_state = 0}, [1534] = {.lex_state = 0}, - [1535] = {.lex_state = 0, .external_lex_state = 6}, - [1536] = {.lex_state = 0}, - [1537] = {.lex_state = 0, .external_lex_state = 6}, - [1538] = {.lex_state = 0}, - [1539] = {.lex_state = 17}, + [1535] = {.lex_state = 0}, + [1536] = {.lex_state = 17}, + [1537] = {.lex_state = 0}, + [1538] = {.lex_state = 17}, + [1539] = {.lex_state = 0}, [1540] = {.lex_state = 0}, [1541] = {.lex_state = 17}, [1542] = {.lex_state = 0}, - [1543] = {.lex_state = 17}, - [1544] = {.lex_state = 0}, - [1545] = {.lex_state = 0}, + [1543] = {.lex_state = 16}, + [1544] = {.lex_state = 17}, + [1545] = {.lex_state = 0, .external_lex_state = 6}, [1546] = {.lex_state = 17}, - [1547] = {.lex_state = 17}, - [1548] = {.lex_state = 51}, + [1547] = {.lex_state = 51}, + [1548] = {.lex_state = 17}, [1549] = {.lex_state = 0}, - [1550] = {.lex_state = 51}, - [1551] = {.lex_state = 0, .external_lex_state = 6}, - [1552] = {.lex_state = 51}, + [1550] = {.lex_state = 17}, + [1551] = {.lex_state = 51}, + [1552] = {.lex_state = 0, .external_lex_state = 6}, [1553] = {.lex_state = 0}, - [1554] = {.lex_state = 17}, + [1554] = {.lex_state = 0, .external_lex_state = 6}, [1555] = {.lex_state = 0}, [1556] = {.lex_state = 0}, [1557] = {.lex_state = 0}, [1558] = {.lex_state = 0}, - [1559] = {.lex_state = 0}, - [1560] = {.lex_state = 0}, - [1561] = {.lex_state = 0}, - [1562] = {.lex_state = 16}, + [1559] = {.lex_state = 0, .external_lex_state = 6}, + [1560] = {.lex_state = 17}, + [1561] = {.lex_state = 0, .external_lex_state = 6}, + [1562] = {.lex_state = 0}, [1563] = {.lex_state = 0}, - [1564] = {.lex_state = 0}, - [1565] = {.lex_state = 51}, + [1564] = {.lex_state = 51}, + [1565] = {.lex_state = 0, .external_lex_state = 6}, [1566] = {.lex_state = 0}, [1567] = {.lex_state = 0}, - [1568] = {.lex_state = 0, .external_lex_state = 6}, - [1569] = {.lex_state = 0}, + [1568] = {.lex_state = 0}, + [1569] = {.lex_state = 0, .external_lex_state = 6}, [1570] = {.lex_state = 0}, - [1571] = {.lex_state = 17}, - [1572] = {.lex_state = 0, .external_lex_state = 6}, + [1571] = {.lex_state = 0, .external_lex_state = 6}, + [1572] = {.lex_state = 0}, [1573] = {.lex_state = 0}, [1574] = {.lex_state = 0}, [1575] = {.lex_state = 0}, - [1576] = {.lex_state = 0}, + [1576] = {.lex_state = 17}, [1577] = {.lex_state = 0}, - [1578] = {.lex_state = 0}, + [1578] = {.lex_state = 0, .external_lex_state = 6}, [1579] = {.lex_state = 0, .external_lex_state = 6}, - [1580] = {.lex_state = 0}, - [1581] = {.lex_state = 0}, - [1582] = {.lex_state = 17}, - [1583] = {.lex_state = 51}, - [1584] = {.lex_state = 0}, - [1585] = {.lex_state = 0}, - [1586] = {.lex_state = 0}, + [1580] = {.lex_state = 0, .external_lex_state = 6}, + [1581] = {.lex_state = 0, .external_lex_state = 6}, + [1582] = {.lex_state = 0}, + [1583] = {.lex_state = 0}, + [1584] = {.lex_state = 0, .external_lex_state = 6}, + [1585] = {.lex_state = 0, .external_lex_state = 6}, + [1586] = {.lex_state = 0, .external_lex_state = 6}, [1587] = {.lex_state = 0}, - [1588] = {.lex_state = 51}, - [1589] = {.lex_state = 51}, - [1590] = {.lex_state = 51}, - [1591] = {.lex_state = 0}, + [1588] = {.lex_state = 0}, + [1589] = {.lex_state = 0, .external_lex_state = 6}, + [1590] = {.lex_state = 0}, + [1591] = {.lex_state = 0, .external_lex_state = 6}, [1592] = {.lex_state = 0}, - [1593] = {.lex_state = 51}, - [1594] = {.lex_state = 0}, + [1593] = {.lex_state = 0}, + [1594] = {.lex_state = 51}, [1595] = {.lex_state = 0}, - [1596] = {.lex_state = 0}, - [1597] = {.lex_state = 51}, - [1598] = {.lex_state = 51}, + [1596] = {.lex_state = 0, .external_lex_state = 6}, + [1597] = {.lex_state = 0}, + [1598] = {.lex_state = 0}, [1599] = {.lex_state = 0}, [1600] = {.lex_state = 0}, - [1601] = {.lex_state = 51}, + [1601] = {.lex_state = 0}, [1602] = {.lex_state = 0}, - [1603] = {.lex_state = 51}, - [1604] = {.lex_state = 51}, - [1605] = {.lex_state = 0}, + [1603] = {.lex_state = 0, .external_lex_state = 6}, + [1604] = {.lex_state = 0}, + [1605] = {.lex_state = 0, .external_lex_state = 6}, [1606] = {.lex_state = 51}, - [1607] = {.lex_state = 51}, - [1608] = {.lex_state = 51}, - [1609] = {.lex_state = 51}, - [1610] = {.lex_state = 51}, + [1607] = {.lex_state = 0}, + [1608] = {.lex_state = 0, .external_lex_state = 6}, + [1609] = {.lex_state = 0}, + [1610] = {.lex_state = 0, .external_lex_state = 6}, [1611] = {.lex_state = 0}, - [1612] = {.lex_state = 0}, - [1613] = {.lex_state = 0}, + [1612] = {.lex_state = 17}, + [1613] = {.lex_state = 51}, [1614] = {.lex_state = 0}, [1615] = {.lex_state = 0}, - [1616] = {.lex_state = 51}, - [1617] = {.lex_state = 51}, - [1618] = {.lex_state = 51}, + [1616] = {.lex_state = 0}, + [1617] = {.lex_state = 0}, + [1618] = {.lex_state = 0}, [1619] = {.lex_state = 0}, - [1620] = {.lex_state = 51}, - [1621] = {.lex_state = 51}, + [1620] = {.lex_state = 0}, + [1621] = {.lex_state = 0}, [1622] = {.lex_state = 51}, [1623] = {.lex_state = 0}, [1624] = {.lex_state = 0}, - [1625] = {.lex_state = 51}, - [1626] = {.lex_state = 0}, + [1625] = {.lex_state = 0}, + [1626] = {.lex_state = 51}, [1627] = {.lex_state = 0}, [1628] = {.lex_state = 0}, - [1629] = {.lex_state = 0}, + [1629] = {.lex_state = 51}, [1630] = {.lex_state = 51}, [1631] = {.lex_state = 0}, - [1632] = {.lex_state = 0}, + [1632] = {.lex_state = 51}, [1633] = {.lex_state = 0}, - [1634] = {.lex_state = 0}, - [1635] = {.lex_state = 0}, - [1636] = {.lex_state = 0}, + [1634] = {.lex_state = 51}, + [1635] = {.lex_state = 51}, + [1636] = {.lex_state = 51}, [1637] = {.lex_state = 51}, [1638] = {.lex_state = 0}, [1639] = {.lex_state = 51}, - [1640] = {.lex_state = 51}, + [1640] = {.lex_state = 0}, [1641] = {.lex_state = 0}, [1642] = {.lex_state = 51}, - [1643] = {.lex_state = 0}, - [1644] = {.lex_state = 0}, - [1645] = {.lex_state = 0}, - [1646] = {.lex_state = 51}, - [1647] = {.lex_state = 0}, - [1648] = {.lex_state = 0}, - [1649] = {.lex_state = 0}, + [1643] = {.lex_state = 51}, + [1644] = {.lex_state = 51}, + [1645] = {.lex_state = 51}, + [1646] = {.lex_state = 0}, + [1647] = {.lex_state = 51}, + [1648] = {.lex_state = 51}, + [1649] = {.lex_state = 51}, [1650] = {.lex_state = 0}, [1651] = {.lex_state = 0}, - [1652] = {.lex_state = 0}, + [1652] = {.lex_state = 51}, [1653] = {.lex_state = 0}, [1654] = {.lex_state = 0}, [1655] = {.lex_state = 0}, @@ -8063,39 +8129,39 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1658] = {.lex_state = 0}, [1659] = {.lex_state = 0}, [1660] = {.lex_state = 0}, - [1661] = {.lex_state = 0}, + [1661] = {.lex_state = 51}, [1662] = {.lex_state = 0}, - [1663] = {.lex_state = 0}, + [1663] = {.lex_state = 51}, [1664] = {.lex_state = 0}, [1665] = {.lex_state = 0}, - [1666] = {.lex_state = 51}, - [1667] = {.lex_state = 0}, - [1668] = {.lex_state = 51}, + [1666] = {.lex_state = 0}, + [1667] = {.lex_state = 51}, + [1668] = {.lex_state = 0}, [1669] = {.lex_state = 0}, - [1670] = {.lex_state = 51}, + [1670] = {.lex_state = 0}, [1671] = {.lex_state = 0}, [1672] = {.lex_state = 0}, - [1673] = {.lex_state = 51}, + [1673] = {.lex_state = 0}, [1674] = {.lex_state = 0}, [1675] = {.lex_state = 0}, - [1676] = {.lex_state = 51}, + [1676] = {.lex_state = 0}, [1677] = {.lex_state = 0}, [1678] = {.lex_state = 0}, [1679] = {.lex_state = 0}, [1680] = {.lex_state = 0}, [1681] = {.lex_state = 0}, - [1682] = {.lex_state = 51}, - [1683] = {.lex_state = 0}, + [1682] = {.lex_state = 0}, + [1683] = {.lex_state = 51}, [1684] = {.lex_state = 0}, [1685] = {.lex_state = 0}, [1686] = {.lex_state = 0}, - [1687] = {.lex_state = 0}, - [1688] = {.lex_state = 51}, + [1687] = {.lex_state = 51}, + [1688] = {.lex_state = 0}, [1689] = {.lex_state = 51}, - [1690] = {.lex_state = 51}, - [1691] = {.lex_state = 0}, + [1690] = {.lex_state = 0}, + [1691] = {.lex_state = 51}, [1692] = {.lex_state = 0}, - [1693] = {.lex_state = 0}, + [1693] = {.lex_state = 51}, [1694] = {.lex_state = 0}, [1695] = {.lex_state = 0}, [1696] = {.lex_state = 0}, @@ -8103,34 +8169,67 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1698] = {.lex_state = 0}, [1699] = {.lex_state = 0}, [1700] = {.lex_state = 0}, - [1701] = {.lex_state = 0}, + [1701] = {.lex_state = 51}, [1702] = {.lex_state = 0}, [1703] = {.lex_state = 0}, - [1704] = {.lex_state = 0}, + [1704] = {.lex_state = 51}, [1705] = {.lex_state = 0}, - [1706] = {.lex_state = 0}, + [1706] = {.lex_state = 51}, [1707] = {.lex_state = 0}, [1708] = {.lex_state = 0}, [1709] = {.lex_state = 0}, - [1710] = {.lex_state = 51}, - [1711] = {.lex_state = 51}, - [1712] = {.lex_state = 51}, + [1710] = {.lex_state = 0}, + [1711] = {.lex_state = 0}, + [1712] = {.lex_state = 0}, [1713] = {.lex_state = 0}, [1714] = {.lex_state = 0}, - [1715] = {.lex_state = 0}, - [1716] = {.lex_state = 0}, + [1715] = {.lex_state = 51}, + [1716] = {.lex_state = 51}, [1717] = {.lex_state = 0}, [1718] = {.lex_state = 0}, - [1719] = {.lex_state = 0}, - [1720] = {.lex_state = 0}, + [1719] = {.lex_state = 51}, + [1720] = {.lex_state = 51}, [1721] = {.lex_state = 0}, - [1722] = {.lex_state = 51}, + [1722] = {.lex_state = 0}, + [1723] = {.lex_state = 0}, + [1724] = {.lex_state = 0}, + [1725] = {.lex_state = 51}, + [1726] = {.lex_state = 51}, + [1727] = {.lex_state = 0}, + [1728] = {.lex_state = 0}, + [1729] = {.lex_state = 51}, + [1730] = {.lex_state = 0}, + [1731] = {.lex_state = 0}, + [1732] = {.lex_state = 51}, + [1733] = {.lex_state = 0}, + [1734] = {.lex_state = 0}, + [1735] = {.lex_state = 0}, + [1736] = {.lex_state = 0}, + [1737] = {.lex_state = 0}, + [1738] = {.lex_state = 0}, + [1739] = {.lex_state = 0}, + [1740] = {.lex_state = 0}, + [1741] = {.lex_state = 0}, + [1742] = {.lex_state = 0}, + [1743] = {.lex_state = 0}, + [1744] = {.lex_state = 0}, + [1745] = {.lex_state = 0}, + [1746] = {.lex_state = 0}, + [1747] = {.lex_state = 51}, + [1748] = {.lex_state = 0}, + [1749] = {.lex_state = 0}, + [1750] = {.lex_state = 0}, + [1751] = {.lex_state = 0}, + [1752] = {.lex_state = 51}, + [1753] = {.lex_state = 51}, + [1754] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(0)] = { [ts_builtin_sym_end] = ACTIONS(1), [sym_identifier] = ACTIONS(1), + [anon_sym_lazy] = ACTIONS(1), [anon_sym_import] = ACTIONS(1), [anon_sym_DOT] = ACTIONS(1), [anon_sym_from] = ACTIONS(1), @@ -8236,257 +8335,378 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(1), }, [STATE(1)] = { - [sym_module] = STATE(1655), - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_if_statement] = STATE(62), - [sym_for_statement] = STATE(62), - [sym_while_statement] = STATE(62), - [sym_try_statement] = STATE(62), - [sym_with_statement] = STATE(62), - [sym_match_statement] = STATE(62), - [sym_function_definition] = STATE(62), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(1118), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(1118), + [sym_module] = STATE(1708), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_if_statement] = STATE(64), + [sym_for_statement] = STATE(64), + [sym_while_statement] = STATE(64), + [sym_try_statement] = STATE(64), + [sym_with_statement] = STATE(64), + [sym_match_statement] = STATE(64), + [sym_function_definition] = STATE(64), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1172), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1172), [ts_builtin_sym_end] = ACTIONS(5), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(33), - [anon_sym_async] = ACTIONS(35), - [anon_sym_for] = ACTIONS(37), - [anon_sym_while] = ACTIONS(39), - [anon_sym_try] = ACTIONS(41), - [anon_sym_with] = ACTIONS(43), - [anon_sym_match] = ACTIONS(45), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(55), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(65), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(35), + [anon_sym_async] = ACTIONS(37), + [anon_sym_for] = ACTIONS(39), + [anon_sym_while] = ACTIONS(41), + [anon_sym_try] = ACTIONS(43), + [anon_sym_with] = ACTIONS(45), + [anon_sym_match] = ACTIONS(47), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(57), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(67), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(2)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(327), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(491), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(3)] = { + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(60), + [sym_for_statement] = STATE(60), + [sym_while_statement] = STATE(60), + [sym_try_statement] = STATE(60), + [sym_with_statement] = STATE(60), + [sym_match_statement] = STATE(60), + [sym_function_definition] = STATE(60), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(1195), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(107), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(4)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -8494,1061 +8714,3331 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(1181), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(329), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(105), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(4)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(322), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(5)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(490), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(478), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(6)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(540), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(604), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(7)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(547), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(615), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(8)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(605), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(525), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(9)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(519), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(541), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(10)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(522), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(547), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(11)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(63), - [sym_for_statement] = STATE(63), - [sym_while_statement] = STATE(63), - [sym_try_statement] = STATE(63), - [sym_with_statement] = STATE(63), - [sym_match_statement] = STATE(63), - [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(524), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(550), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(12)] = { - [sym__statement] = STATE(63), + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(582), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(13)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(490), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(14)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(447), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(15)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(609), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(16)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(601), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(17)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(612), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(18)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(512), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(19)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(468), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(20)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(542), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(21)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(455), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(22)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(496), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(23)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(606), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(24)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(472), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(25)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(517), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(26)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(442), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(27)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(508), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(28)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(522), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(29)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(523), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(30)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(450), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(31)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(61), + [sym_for_statement] = STATE(61), + [sym_while_statement] = STATE(61), + [sym_try_statement] = STATE(61), + [sym_with_statement] = STATE(61), + [sym_match_statement] = STATE(61), + [sym_function_definition] = STATE(61), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(451), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(109), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(32)] = { + [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -9556,117 +12046,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(526), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(322), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(13)] = { + [STATE(33)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -9674,117 +12165,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(484), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(559), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(14)] = { + [STATE(34)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -9792,117 +12284,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(456), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(567), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(15)] = { + [STATE(35)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -9910,117 +12403,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(529), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(573), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(16)] = { + [STATE(36)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10028,117 +12522,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(532), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(575), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(17)] = { + [STATE(37)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10146,117 +12641,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(533), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(577), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(18)] = { + [STATE(38)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10264,117 +12760,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(498), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(579), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(19)] = { + [STATE(39)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10382,117 +12879,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(476), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(486), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(20)] = { + [STATE(40)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10500,117 +12998,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(538), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(454), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(21)] = { + [STATE(41)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10618,117 +13117,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(455), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(583), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(22)] = { + [STATE(42)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10736,117 +13236,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(499), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(586), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(23)] = { + [STATE(43)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10854,117 +13355,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(542), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(587), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(24)] = { + [STATE(44)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -10972,117 +13474,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(471), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(502), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(25)] = { + [STATE(45)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -11090,117 +13593,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(545), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(488), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(26)] = { + [STATE(46)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -11208,117 +13712,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(457), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(591), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(27)] = { + [STATE(47)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -11326,117 +13831,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(501), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(459), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(28)] = { + [STATE(48)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -11444,117 +13950,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(548), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(504), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(29)] = { + [STATE(49)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -11562,117 +14069,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(448), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(595), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(30)] = { + [STATE(50)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -11680,3421 +14188,832 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(449), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(489), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(31)] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(61), - [sym_for_statement] = STATE(61), - [sym_while_statement] = STATE(61), - [sym_try_statement] = STATE(61), - [sym_with_statement] = STATE(61), - [sym_match_statement] = STATE(61), - [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(1173), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [STATE(51)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(598), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), [sym__dedent] = ACTIONS(105), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(32)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(477), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [STATE(52)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(460), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(33)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(563), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [STATE(53)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(507), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(34)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(565), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(35)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(570), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(36)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(576), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(37)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(578), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(38)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(580), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(39)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(583), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(40)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(469), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(41)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(438), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(42)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(586), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(43)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(590), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(44)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(591), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(45)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(492), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(46)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(466), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(47)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(594), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(48)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(441), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(49)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(505), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(50)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(598), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(51)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(486), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(52)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(601), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(53)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(443), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(54)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(507), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(602), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(55)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), [sym_block] = STATE(603), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(56)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(604), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(464), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(57)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(446), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(58)] = { - [sym__statement] = STATE(65), - [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(65), - [sym_for_statement] = STATE(65), - [sym_while_statement] = STATE(65), - [sym_try_statement] = STATE(65), - [sym_with_statement] = STATE(65), - [sym_match_statement] = STATE(65), - [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(65), - [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(447), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(103), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), - }, - [STATE(59)] = { [sym__statement] = STATE(63), [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(63), [sym_for_statement] = STATE(63), [sym_while_statement] = STATE(63), @@ -15102,117 +15021,118 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(63), [sym_match_statement] = STATE(63), [sym_function_definition] = STATE(63), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(63), [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1113), - [sym_block] = STATE(549), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(439), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(60)] = { + [STATE(58)] = { [sym__statement] = STATE(60), [sym__simple_statements] = STATE(60), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), [sym_if_statement] = STATE(60), [sym_for_statement] = STATE(60), [sym_while_statement] = STATE(60), @@ -15220,9085 +15140,9408 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(60), [sym_match_statement] = STATE(60), [sym_function_definition] = STATE(60), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), [sym_class_definition] = STATE(60), [sym_decorated_definition] = STATE(60), - [sym_decorator] = STATE(1118), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(1215), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [aux_sym_module_repeat1] = STATE(60), - [aux_sym_decorated_definition_repeat1] = STATE(1118), - [ts_builtin_sym_end] = ACTIONS(109), - [sym_identifier] = ACTIONS(111), - [anon_sym_import] = ACTIONS(114), - [anon_sym_from] = ACTIONS(117), - [anon_sym_LPAREN] = ACTIONS(120), - [anon_sym_STAR] = ACTIONS(123), - [anon_sym_print] = ACTIONS(126), - [anon_sym_assert] = ACTIONS(129), - [anon_sym_return] = ACTIONS(132), - [anon_sym_del] = ACTIONS(135), - [anon_sym_raise] = ACTIONS(138), - [anon_sym_pass] = ACTIONS(141), - [anon_sym_break] = ACTIONS(144), - [anon_sym_continue] = ACTIONS(147), - [anon_sym_if] = ACTIONS(150), - [anon_sym_async] = ACTIONS(153), - [anon_sym_for] = ACTIONS(156), - [anon_sym_while] = ACTIONS(159), - [anon_sym_try] = ACTIONS(162), - [anon_sym_with] = ACTIONS(165), - [anon_sym_match] = ACTIONS(168), - [anon_sym_DASH] = ACTIONS(171), - [anon_sym_PLUS] = ACTIONS(171), - [anon_sym_LBRACK] = ACTIONS(174), - [anon_sym_LBRACE] = ACTIONS(177), - [anon_sym_STAR_STAR] = ACTIONS(180), - [anon_sym_def] = ACTIONS(183), - [anon_sym_global] = ACTIONS(186), - [anon_sym_nonlocal] = ACTIONS(189), - [anon_sym_exec] = ACTIONS(192), - [anon_sym_type] = ACTIONS(195), - [anon_sym_class] = ACTIONS(198), - [anon_sym_AT] = ACTIONS(201), - [anon_sym_not] = ACTIONS(204), - [anon_sym_TILDE] = ACTIONS(171), - [anon_sym_lambda] = ACTIONS(207), - [anon_sym_yield] = ACTIONS(210), - [sym_ellipsis] = ACTIONS(213), - [sym_integer] = ACTIONS(216), - [sym_float] = ACTIONS(213), - [anon_sym_await] = ACTIONS(219), - [sym_true] = ACTIONS(216), - [sym_false] = ACTIONS(216), - [sym_none] = ACTIONS(216), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(222), - [sym__template_string_start] = ACTIONS(225), + [sym__dedent] = ACTIONS(107), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(59)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(63), + [sym_for_statement] = STATE(63), + [sym_while_statement] = STATE(63), + [sym_try_statement] = STATE(63), + [sym_with_statement] = STATE(63), + [sym_match_statement] = STATE(63), + [sym_function_definition] = STATE(63), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1146), + [sym_block] = STATE(560), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(60)] = { + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(62), + [sym_for_statement] = STATE(62), + [sym_while_statement] = STATE(62), + [sym_try_statement] = STATE(62), + [sym_with_statement] = STATE(62), + [sym_match_statement] = STATE(62), + [sym_function_definition] = STATE(62), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(1146), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(111), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(61)] = { - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(64), - [sym_for_statement] = STATE(64), - [sym_while_statement] = STATE(64), - [sym_try_statement] = STATE(64), - [sym_with_statement] = STATE(64), - [sym_match_statement] = STATE(64), - [sym_function_definition] = STATE(64), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(1113), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(62), + [sym_for_statement] = STATE(62), + [sym_while_statement] = STATE(62), + [sym_try_statement] = STATE(62), + [sym_with_statement] = STATE(62), + [sym_match_statement] = STATE(62), + [sym_function_definition] = STATE(62), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(1146), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(228), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(113), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(62)] = { - [sym__statement] = STATE(60), - [sym__simple_statements] = STATE(60), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_if_statement] = STATE(60), - [sym_for_statement] = STATE(60), - [sym_while_statement] = STATE(60), - [sym_try_statement] = STATE(60), - [sym_with_statement] = STATE(60), - [sym_match_statement] = STATE(60), - [sym_function_definition] = STATE(60), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_class_definition] = STATE(60), - [sym_decorated_definition] = STATE(60), - [sym_decorator] = STATE(1118), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(60), - [aux_sym_decorated_definition_repeat1] = STATE(1118), - [ts_builtin_sym_end] = ACTIONS(230), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(33), - [anon_sym_async] = ACTIONS(35), - [anon_sym_for] = ACTIONS(37), - [anon_sym_while] = ACTIONS(39), - [anon_sym_try] = ACTIONS(41), - [anon_sym_with] = ACTIONS(43), - [anon_sym_match] = ACTIONS(45), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(55), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(65), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(62), + [sym_for_statement] = STATE(62), + [sym_while_statement] = STATE(62), + [sym_try_statement] = STATE(62), + [sym_with_statement] = STATE(62), + [sym_match_statement] = STATE(62), + [sym_function_definition] = STATE(62), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(1146), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_identifier] = ACTIONS(115), + [anon_sym_lazy] = ACTIONS(118), + [anon_sym_import] = ACTIONS(121), + [anon_sym_from] = ACTIONS(124), + [anon_sym_LPAREN] = ACTIONS(127), + [anon_sym_STAR] = ACTIONS(130), + [anon_sym_print] = ACTIONS(133), + [anon_sym_assert] = ACTIONS(136), + [anon_sym_return] = ACTIONS(139), + [anon_sym_del] = ACTIONS(142), + [anon_sym_raise] = ACTIONS(145), + [anon_sym_pass] = ACTIONS(148), + [anon_sym_break] = ACTIONS(151), + [anon_sym_continue] = ACTIONS(154), + [anon_sym_if] = ACTIONS(157), + [anon_sym_async] = ACTIONS(160), + [anon_sym_for] = ACTIONS(163), + [anon_sym_while] = ACTIONS(166), + [anon_sym_try] = ACTIONS(169), + [anon_sym_with] = ACTIONS(172), + [anon_sym_match] = ACTIONS(175), + [anon_sym_DASH] = ACTIONS(178), + [anon_sym_PLUS] = ACTIONS(178), + [anon_sym_LBRACK] = ACTIONS(181), + [anon_sym_LBRACE] = ACTIONS(184), + [anon_sym_STAR_STAR] = ACTIONS(187), + [anon_sym_def] = ACTIONS(190), + [anon_sym_global] = ACTIONS(193), + [anon_sym_nonlocal] = ACTIONS(196), + [anon_sym_exec] = ACTIONS(199), + [anon_sym_type] = ACTIONS(202), + [anon_sym_class] = ACTIONS(205), + [anon_sym_AT] = ACTIONS(208), + [anon_sym_not] = ACTIONS(211), + [anon_sym_TILDE] = ACTIONS(178), + [anon_sym_lambda] = ACTIONS(214), + [anon_sym_yield] = ACTIONS(217), + [sym_ellipsis] = ACTIONS(220), + [sym_integer] = ACTIONS(223), + [sym_float] = ACTIONS(220), + [anon_sym_await] = ACTIONS(226), + [sym_true] = ACTIONS(223), + [sym_false] = ACTIONS(223), + [sym_none] = ACTIONS(223), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(229), + [sym__string_start] = ACTIONS(231), + [sym__template_string_start] = ACTIONS(234), }, [STATE(63)] = { - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(64), - [sym_for_statement] = STATE(64), - [sym_while_statement] = STATE(64), - [sym_try_statement] = STATE(64), - [sym_with_statement] = STATE(64), - [sym_match_statement] = STATE(64), - [sym_function_definition] = STATE(64), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(1113), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(1113), + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_if_statement] = STATE(62), + [sym_for_statement] = STATE(62), + [sym_while_statement] = STATE(62), + [sym_try_statement] = STATE(62), + [sym_with_statement] = STATE(62), + [sym_match_statement] = STATE(62), + [sym_function_definition] = STATE(62), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(1146), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(1146), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(232), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__dedent] = ACTIONS(237), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(64)] = { - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(64), - [sym_for_statement] = STATE(64), - [sym_while_statement] = STATE(64), - [sym_try_statement] = STATE(64), - [sym_with_statement] = STATE(64), - [sym_match_statement] = STATE(64), - [sym_function_definition] = STATE(64), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(1113), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(111), - [anon_sym_import] = ACTIONS(114), - [anon_sym_from] = ACTIONS(117), - [anon_sym_LPAREN] = ACTIONS(120), - [anon_sym_STAR] = ACTIONS(123), - [anon_sym_print] = ACTIONS(126), - [anon_sym_assert] = ACTIONS(129), - [anon_sym_return] = ACTIONS(132), - [anon_sym_del] = ACTIONS(135), - [anon_sym_raise] = ACTIONS(138), - [anon_sym_pass] = ACTIONS(141), - [anon_sym_break] = ACTIONS(144), - [anon_sym_continue] = ACTIONS(147), - [anon_sym_if] = ACTIONS(234), - [anon_sym_async] = ACTIONS(237), - [anon_sym_for] = ACTIONS(240), - [anon_sym_while] = ACTIONS(243), - [anon_sym_try] = ACTIONS(246), - [anon_sym_with] = ACTIONS(249), - [anon_sym_match] = ACTIONS(252), - [anon_sym_DASH] = ACTIONS(171), - [anon_sym_PLUS] = ACTIONS(171), - [anon_sym_LBRACK] = ACTIONS(174), - [anon_sym_LBRACE] = ACTIONS(177), - [anon_sym_STAR_STAR] = ACTIONS(180), - [anon_sym_def] = ACTIONS(255), - [anon_sym_global] = ACTIONS(186), - [anon_sym_nonlocal] = ACTIONS(189), - [anon_sym_exec] = ACTIONS(192), - [anon_sym_type] = ACTIONS(195), - [anon_sym_class] = ACTIONS(258), - [anon_sym_AT] = ACTIONS(201), - [anon_sym_not] = ACTIONS(204), - [anon_sym_TILDE] = ACTIONS(171), - [anon_sym_lambda] = ACTIONS(207), - [anon_sym_yield] = ACTIONS(210), - [sym_ellipsis] = ACTIONS(213), - [sym_integer] = ACTIONS(216), - [sym_float] = ACTIONS(213), - [anon_sym_await] = ACTIONS(219), - [sym_true] = ACTIONS(216), - [sym_false] = ACTIONS(216), - [sym_none] = ACTIONS(216), + [sym__statement] = STATE(65), + [sym__simple_statements] = STATE(65), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_if_statement] = STATE(65), + [sym_for_statement] = STATE(65), + [sym_while_statement] = STATE(65), + [sym_try_statement] = STATE(65), + [sym_with_statement] = STATE(65), + [sym_match_statement] = STATE(65), + [sym_function_definition] = STATE(65), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_class_definition] = STATE(65), + [sym_decorated_definition] = STATE(65), + [sym_decorator] = STATE(1172), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(65), + [aux_sym_decorated_definition_repeat1] = STATE(1172), + [ts_builtin_sym_end] = ACTIONS(239), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(35), + [anon_sym_async] = ACTIONS(37), + [anon_sym_for] = ACTIONS(39), + [anon_sym_while] = ACTIONS(41), + [anon_sym_try] = ACTIONS(43), + [anon_sym_with] = ACTIONS(45), + [anon_sym_match] = ACTIONS(47), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(57), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(67), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(109), - [sym__string_start] = ACTIONS(222), - [sym__template_string_start] = ACTIONS(225), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(65)] = { - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_if_statement] = STATE(64), - [sym_for_statement] = STATE(64), - [sym_while_statement] = STATE(64), - [sym_try_statement] = STATE(64), - [sym_with_statement] = STATE(64), - [sym_match_statement] = STATE(64), - [sym_function_definition] = STATE(64), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(1113), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(1113), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_if] = ACTIONS(85), - [anon_sym_async] = ACTIONS(87), - [anon_sym_for] = ACTIONS(89), - [anon_sym_while] = ACTIONS(91), - [anon_sym_try] = ACTIONS(93), - [anon_sym_with] = ACTIONS(95), - [anon_sym_match] = ACTIONS(97), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_def] = ACTIONS(99), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_class] = ACTIONS(101), - [anon_sym_AT] = ACTIONS(67), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym__statement] = STATE(65), + [sym__simple_statements] = STATE(65), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_if_statement] = STATE(65), + [sym_for_statement] = STATE(65), + [sym_while_statement] = STATE(65), + [sym_try_statement] = STATE(65), + [sym_with_statement] = STATE(65), + [sym_match_statement] = STATE(65), + [sym_function_definition] = STATE(65), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_class_definition] = STATE(65), + [sym_decorated_definition] = STATE(65), + [sym_decorator] = STATE(1172), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [aux_sym_module_repeat1] = STATE(65), + [aux_sym_decorated_definition_repeat1] = STATE(1172), + [ts_builtin_sym_end] = ACTIONS(229), + [sym_identifier] = ACTIONS(115), + [anon_sym_lazy] = ACTIONS(118), + [anon_sym_import] = ACTIONS(121), + [anon_sym_from] = ACTIONS(124), + [anon_sym_LPAREN] = ACTIONS(127), + [anon_sym_STAR] = ACTIONS(130), + [anon_sym_print] = ACTIONS(133), + [anon_sym_assert] = ACTIONS(136), + [anon_sym_return] = ACTIONS(139), + [anon_sym_del] = ACTIONS(142), + [anon_sym_raise] = ACTIONS(145), + [anon_sym_pass] = ACTIONS(148), + [anon_sym_break] = ACTIONS(151), + [anon_sym_continue] = ACTIONS(154), + [anon_sym_if] = ACTIONS(241), + [anon_sym_async] = ACTIONS(244), + [anon_sym_for] = ACTIONS(247), + [anon_sym_while] = ACTIONS(250), + [anon_sym_try] = ACTIONS(253), + [anon_sym_with] = ACTIONS(256), + [anon_sym_match] = ACTIONS(259), + [anon_sym_DASH] = ACTIONS(178), + [anon_sym_PLUS] = ACTIONS(178), + [anon_sym_LBRACK] = ACTIONS(181), + [anon_sym_LBRACE] = ACTIONS(184), + [anon_sym_STAR_STAR] = ACTIONS(187), + [anon_sym_def] = ACTIONS(262), + [anon_sym_global] = ACTIONS(193), + [anon_sym_nonlocal] = ACTIONS(196), + [anon_sym_exec] = ACTIONS(199), + [anon_sym_type] = ACTIONS(202), + [anon_sym_class] = ACTIONS(265), + [anon_sym_AT] = ACTIONS(208), + [anon_sym_not] = ACTIONS(211), + [anon_sym_TILDE] = ACTIONS(178), + [anon_sym_lambda] = ACTIONS(214), + [anon_sym_yield] = ACTIONS(217), + [sym_ellipsis] = ACTIONS(220), + [sym_integer] = ACTIONS(223), + [sym_float] = ACTIONS(220), + [anon_sym_await] = ACTIONS(226), + [sym_true] = ACTIONS(223), + [sym_false] = ACTIONS(223), + [sym_none] = ACTIONS(223), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(261), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(231), + [sym__template_string_start] = ACTIONS(234), }, [STATE(66)] = { - [sym_named_expression] = STATE(1031), - [sym_list_splat] = STATE(1510), - [sym_dictionary_splat] = STATE(1510), - [sym_expression_list] = STATE(1590), - [sym_expression] = STATE(1254), - [sym_primary_expression] = STATE(719), - [sym_not_operator] = STATE(1031), - [sym_boolean_operator] = STATE(1031), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_comparison_operator] = STATE(1031), - [sym_lambda] = STATE(1031), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_conditional_expression] = STATE(1031), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(263), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(267), - [anon_sym_COMMA] = ACTIONS(270), - [anon_sym_STAR] = ACTIONS(273), - [anon_sym_print] = ACTIONS(276), - [anon_sym_GT_GT] = ACTIONS(265), - [anon_sym_COLON_EQ] = ACTIONS(278), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(280), - [anon_sym_async] = ACTIONS(276), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(276), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(282), - [anon_sym_PLUS] = ACTIONS(282), - [anon_sym_LBRACK] = ACTIONS(285), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(290), - [anon_sym_EQ] = ACTIONS(280), - [anon_sym_exec] = ACTIONS(276), - [anon_sym_type] = ACTIONS(276), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_not] = ACTIONS(293), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [anon_sym_lambda] = ACTIONS(300), - [anon_sym_PLUS_EQ] = ACTIONS(302), - [anon_sym_DASH_EQ] = ACTIONS(302), - [anon_sym_STAR_EQ] = ACTIONS(302), - [anon_sym_SLASH_EQ] = ACTIONS(302), - [anon_sym_AT_EQ] = ACTIONS(302), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(302), - [anon_sym_PERCENT_EQ] = ACTIONS(302), - [anon_sym_STAR_STAR_EQ] = ACTIONS(302), - [anon_sym_GT_GT_EQ] = ACTIONS(302), - [anon_sym_LT_LT_EQ] = ACTIONS(302), - [anon_sym_AMP_EQ] = ACTIONS(302), - [anon_sym_CARET_EQ] = ACTIONS(302), - [anon_sym_PIPE_EQ] = ACTIONS(302), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(308), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [sym_named_expression] = STATE(1037), + [sym_list_splat] = STATE(1573), + [sym_dictionary_splat] = STATE(1573), + [sym_expression_list] = STATE(1725), + [sym_expression] = STATE(1277), + [sym_primary_expression] = STATE(704), + [sym_not_operator] = STATE(1037), + [sym_boolean_operator] = STATE(1037), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_comparison_operator] = STATE(1037), + [sym_lambda] = STATE(1037), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_conditional_expression] = STATE(1037), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(268), + [anon_sym_lazy] = ACTIONS(270), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(274), + [anon_sym_COMMA] = ACTIONS(277), + [anon_sym_STAR] = ACTIONS(280), + [anon_sym_print] = ACTIONS(270), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON_EQ] = ACTIONS(283), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(285), + [anon_sym_async] = ACTIONS(270), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(287), + [anon_sym_PLUS] = ACTIONS(287), + [anon_sym_LBRACK] = ACTIONS(290), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(295), + [anon_sym_EQ] = ACTIONS(285), + [anon_sym_exec] = ACTIONS(270), + [anon_sym_type] = ACTIONS(270), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_not] = ACTIONS(298), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [anon_sym_lambda] = ACTIONS(305), + [anon_sym_PLUS_EQ] = ACTIONS(307), + [anon_sym_DASH_EQ] = ACTIONS(307), + [anon_sym_STAR_EQ] = ACTIONS(307), + [anon_sym_SLASH_EQ] = ACTIONS(307), + [anon_sym_AT_EQ] = ACTIONS(307), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), + [anon_sym_PERCENT_EQ] = ACTIONS(307), + [anon_sym_STAR_STAR_EQ] = ACTIONS(307), + [anon_sym_GT_GT_EQ] = ACTIONS(307), + [anon_sym_LT_LT_EQ] = ACTIONS(307), + [anon_sym_AMP_EQ] = ACTIONS(307), + [anon_sym_CARET_EQ] = ACTIONS(307), + [anon_sym_PIPE_EQ] = ACTIONS(307), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(313), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(298), - [sym__newline] = ACTIONS(298), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(67)] = { - [sym_named_expression] = STATE(1031), - [sym_list_splat] = STATE(1510), - [sym_dictionary_splat] = STATE(1510), - [sym_expression_list] = STATE(1676), - [sym_expression] = STATE(1230), - [sym_primary_expression] = STATE(719), - [sym_not_operator] = STATE(1031), - [sym_boolean_operator] = STATE(1031), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_comparison_operator] = STATE(1031), - [sym_lambda] = STATE(1031), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_conditional_expression] = STATE(1031), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(263), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(267), - [anon_sym_COMMA] = ACTIONS(270), - [anon_sym_STAR] = ACTIONS(273), - [anon_sym_print] = ACTIONS(276), - [anon_sym_GT_GT] = ACTIONS(265), - [anon_sym_COLON_EQ] = ACTIONS(278), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(280), - [anon_sym_async] = ACTIONS(276), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(276), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(282), - [anon_sym_PLUS] = ACTIONS(282), - [anon_sym_LBRACK] = ACTIONS(285), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(290), - [anon_sym_EQ] = ACTIONS(280), - [anon_sym_exec] = ACTIONS(276), - [anon_sym_type] = ACTIONS(276), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_not] = ACTIONS(293), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [anon_sym_lambda] = ACTIONS(300), - [anon_sym_PLUS_EQ] = ACTIONS(302), - [anon_sym_DASH_EQ] = ACTIONS(302), - [anon_sym_STAR_EQ] = ACTIONS(302), - [anon_sym_SLASH_EQ] = ACTIONS(302), - [anon_sym_AT_EQ] = ACTIONS(302), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(302), - [anon_sym_PERCENT_EQ] = ACTIONS(302), - [anon_sym_STAR_STAR_EQ] = ACTIONS(302), - [anon_sym_GT_GT_EQ] = ACTIONS(302), - [anon_sym_LT_LT_EQ] = ACTIONS(302), - [anon_sym_AMP_EQ] = ACTIONS(302), - [anon_sym_CARET_EQ] = ACTIONS(302), - [anon_sym_PIPE_EQ] = ACTIONS(302), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(308), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [sym_named_expression] = STATE(1037), + [sym_list_splat] = STATE(1573), + [sym_dictionary_splat] = STATE(1573), + [sym_expression_list] = STATE(1753), + [sym_expression] = STATE(1276), + [sym_primary_expression] = STATE(704), + [sym_not_operator] = STATE(1037), + [sym_boolean_operator] = STATE(1037), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_comparison_operator] = STATE(1037), + [sym_lambda] = STATE(1037), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_conditional_expression] = STATE(1037), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(268), + [anon_sym_lazy] = ACTIONS(270), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(274), + [anon_sym_COMMA] = ACTIONS(277), + [anon_sym_STAR] = ACTIONS(280), + [anon_sym_print] = ACTIONS(270), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON_EQ] = ACTIONS(283), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(285), + [anon_sym_async] = ACTIONS(270), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(270), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(287), + [anon_sym_PLUS] = ACTIONS(287), + [anon_sym_LBRACK] = ACTIONS(290), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(295), + [anon_sym_EQ] = ACTIONS(285), + [anon_sym_exec] = ACTIONS(270), + [anon_sym_type] = ACTIONS(270), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_not] = ACTIONS(298), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [anon_sym_lambda] = ACTIONS(305), + [anon_sym_PLUS_EQ] = ACTIONS(307), + [anon_sym_DASH_EQ] = ACTIONS(307), + [anon_sym_STAR_EQ] = ACTIONS(307), + [anon_sym_SLASH_EQ] = ACTIONS(307), + [anon_sym_AT_EQ] = ACTIONS(307), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), + [anon_sym_PERCENT_EQ] = ACTIONS(307), + [anon_sym_STAR_STAR_EQ] = ACTIONS(307), + [anon_sym_GT_GT_EQ] = ACTIONS(307), + [anon_sym_LT_LT_EQ] = ACTIONS(307), + [anon_sym_AMP_EQ] = ACTIONS(307), + [anon_sym_CARET_EQ] = ACTIONS(307), + [anon_sym_PIPE_EQ] = ACTIONS(307), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(313), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(298), - [sym__newline] = ACTIONS(298), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(68)] = { - [sym_chevron] = STATE(1316), - [sym_named_expression] = STATE(1158), - [sym_expression] = STATE(1175), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_attribute] = STATE(908), - [sym_subscript] = STATE(908), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [sym_identifier] = ACTIONS(314), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(270), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(316), - [anon_sym_GT_GT] = ACTIONS(318), - [anon_sym_COLON_EQ] = ACTIONS(278), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(280), - [anon_sym_async] = ACTIONS(316), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(316), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(265), - [anon_sym_PLUS] = ACTIONS(265), - [anon_sym_LBRACK] = ACTIONS(298), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(265), - [anon_sym_EQ] = ACTIONS(280), - [anon_sym_exec] = ACTIONS(316), - [anon_sym_type] = ACTIONS(316), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_PLUS_EQ] = ACTIONS(302), - [anon_sym_DASH_EQ] = ACTIONS(302), - [anon_sym_STAR_EQ] = ACTIONS(302), - [anon_sym_SLASH_EQ] = ACTIONS(302), - [anon_sym_AT_EQ] = ACTIONS(302), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(302), - [anon_sym_PERCENT_EQ] = ACTIONS(302), - [anon_sym_STAR_STAR_EQ] = ACTIONS(302), - [anon_sym_GT_GT_EQ] = ACTIONS(302), - [anon_sym_LT_LT_EQ] = ACTIONS(302), - [anon_sym_AMP_EQ] = ACTIONS(302), - [anon_sym_CARET_EQ] = ACTIONS(302), - [anon_sym_PIPE_EQ] = ACTIONS(302), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(320), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym__simple_statements] = STATE(616), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(298), - [sym__newline] = ACTIONS(298), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(321), + [sym__indent] = ACTIONS(323), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(69)] = { - [sym__simple_statements] = STATE(1171), - [sym_import_statement] = STATE(1373), - [sym_future_import_statement] = STATE(1373), - [sym_import_from_statement] = STATE(1373), - [sym_print_statement] = STATE(1373), - [sym_assert_statement] = STATE(1373), - [sym_expression_statement] = STATE(1373), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1373), - [sym_delete_statement] = STATE(1373), - [sym_raise_statement] = STATE(1373), - [sym_pass_statement] = STATE(1373), - [sym_break_statement] = STATE(1373), - [sym_continue_statement] = STATE(1373), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1373), - [sym_nonlocal_statement] = STATE(1373), - [sym_exec_statement] = STATE(1373), - [sym_type_alias_statement] = STATE(1373), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(493), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(324), - [sym__indent] = ACTIONS(326), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(325), + [sym__indent] = ACTIONS(327), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(70)] = { - [sym__simple_statements] = STATE(436), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(320), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(328), - [sym__indent] = ACTIONS(330), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(329), + [sym__indent] = ACTIONS(331), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(71)] = { - [sym__simple_statements] = STATE(550), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(477), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(332), - [sym__indent] = ACTIONS(334), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(333), + [sym__indent] = ACTIONS(335), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(72)] = { - [sym__simple_statements] = STATE(581), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(544), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(336), - [sym__indent] = ACTIONS(338), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(337), + [sym__indent] = ACTIONS(339), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(73)] = { - [sym__simple_statements] = STATE(442), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(514), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(340), - [sym__indent] = ACTIONS(342), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(341), + [sym__indent] = ACTIONS(343), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(74)] = { - [sym__simple_statements] = STATE(606), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(483), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(344), - [sym__indent] = ACTIONS(346), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(345), + [sym__indent] = ACTIONS(347), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(75)] = { - [sym__simple_statements] = STATE(482), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(551), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(348), - [sym__indent] = ACTIONS(350), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(349), + [sym__indent] = ACTIONS(351), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(76)] = { - [sym__simple_statements] = STATE(319), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(594), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(352), - [sym__indent] = ACTIONS(354), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(353), + [sym__indent] = ACTIONS(355), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(77)] = { - [sym__simple_statements] = STATE(489), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(531), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(356), - [sym__indent] = ACTIONS(358), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(357), + [sym__indent] = ACTIONS(359), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(78)] = { - [sym__simple_statements] = STATE(554), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym_chevron] = STATE(1323), + [sym_named_expression] = STATE(1126), + [sym_expression] = STATE(1223), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_attribute] = STATE(950), + [sym_subscript] = STATE(950), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [sym_identifier] = ACTIONS(361), + [anon_sym_lazy] = ACTIONS(363), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(277), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(363), + [anon_sym_GT_GT] = ACTIONS(365), + [anon_sym_COLON_EQ] = ACTIONS(283), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(285), + [anon_sym_async] = ACTIONS(363), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(363), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(272), + [anon_sym_PLUS] = ACTIONS(272), + [anon_sym_LBRACK] = ACTIONS(303), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(272), + [anon_sym_EQ] = ACTIONS(285), + [anon_sym_exec] = ACTIONS(363), + [anon_sym_type] = ACTIONS(363), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_PLUS_EQ] = ACTIONS(307), + [anon_sym_DASH_EQ] = ACTIONS(307), + [anon_sym_STAR_EQ] = ACTIONS(307), + [anon_sym_SLASH_EQ] = ACTIONS(307), + [anon_sym_AT_EQ] = ACTIONS(307), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), + [anon_sym_PERCENT_EQ] = ACTIONS(307), + [anon_sym_STAR_STAR_EQ] = ACTIONS(307), + [anon_sym_GT_GT_EQ] = ACTIONS(307), + [anon_sym_LT_LT_EQ] = ACTIONS(307), + [anon_sym_AMP_EQ] = ACTIONS(307), + [anon_sym_CARET_EQ] = ACTIONS(307), + [anon_sym_PIPE_EQ] = ACTIONS(307), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(367), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(360), - [sym__indent] = ACTIONS(362), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(79)] = { - [sym__simple_statements] = STATE(557), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(561), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(364), - [sym__indent] = ACTIONS(366), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(369), + [sym__indent] = ACTIONS(371), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(80)] = { - [sym__simple_statements] = STATE(454), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(562), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(368), - [sym__indent] = ACTIONS(370), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(373), + [sym__indent] = ACTIONS(375), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(81)] = { - [sym__simple_statements] = STATE(559), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(441), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(372), - [sym__indent] = ACTIONS(374), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(377), + [sym__indent] = ACTIONS(379), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(82)] = { - [sym__simple_statements] = STATE(516), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(568), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(376), - [sym__indent] = ACTIONS(378), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(381), + [sym__indent] = ACTIONS(383), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(83)] = { - [sym__simple_statements] = STATE(520), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(482), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(380), - [sym__indent] = ACTIONS(382), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(385), + [sym__indent] = ACTIONS(387), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(84)] = { - [sym__simple_statements] = STATE(564), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(448), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(384), - [sym__indent] = ACTIONS(386), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(389), + [sym__indent] = ACTIONS(391), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(85)] = { - [sym__simple_statements] = STATE(566), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(570), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(388), - [sym__indent] = ACTIONS(390), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(393), + [sym__indent] = ACTIONS(395), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(86)] = { - [sym__simple_statements] = STATE(567), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(574), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(392), - [sym__indent] = ACTIONS(394), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(397), + [sym__indent] = ACTIONS(399), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(87)] = { - [sym__simple_statements] = STATE(523), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(511), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(396), - [sym__indent] = ACTIONS(398), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(401), + [sym__indent] = ACTIONS(403), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(88)] = { - [sym__simple_statements] = STATE(571), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(576), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(400), - [sym__indent] = ACTIONS(402), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(405), + [sym__indent] = ACTIONS(407), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(89)] = { - [sym__simple_statements] = STATE(491), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(613), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(404), - [sym__indent] = ACTIONS(406), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(409), + [sym__indent] = ACTIONS(411), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(90)] = { - [sym__simple_statements] = STATE(437), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(497), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(408), - [sym__indent] = ACTIONS(410), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(413), + [sym__indent] = ACTIONS(415), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(91)] = { - [sym__simple_statements] = STATE(573), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(485), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(412), - [sym__indent] = ACTIONS(414), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(417), + [sym__indent] = ACTIONS(419), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(92)] = { - [sym__simple_statements] = STATE(546), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(332), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(416), - [sym__indent] = ACTIONS(418), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(421), + [sym__indent] = ACTIONS(423), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(93)] = { - [sym__simple_statements] = STATE(577), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(580), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(420), - [sym__indent] = ACTIONS(422), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(425), + [sym__indent] = ACTIONS(427), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(94)] = { - [sym__simple_statements] = STATE(495), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(611), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(424), - [sym__indent] = ACTIONS(426), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(429), + [sym__indent] = ACTIONS(431), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(95)] = { - [sym__simple_statements] = STATE(579), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(467), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(428), - [sym__indent] = ACTIONS(430), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(433), + [sym__indent] = ACTIONS(435), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(96)] = { - [sym__simple_statements] = STATE(541), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(456), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(432), - [sym__indent] = ACTIONS(434), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(437), + [sym__indent] = ACTIONS(439), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(97)] = { - [sym__simple_statements] = STATE(503), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(475), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(436), - [sym__indent] = ACTIONS(438), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(441), + [sym__indent] = ACTIONS(443), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(98)] = { - [sym__simple_statements] = STATE(480), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(500), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(440), - [sym__indent] = ACTIONS(442), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(445), + [sym__indent] = ACTIONS(447), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(99)] = { - [sym__simple_statements] = STATE(312), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(519), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(444), - [sym__indent] = ACTIONS(446), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(449), + [sym__indent] = ACTIONS(451), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(100)] = { - [sym__simple_statements] = STATE(584), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(536), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(448), - [sym__indent] = ACTIONS(450), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(453), + [sym__indent] = ACTIONS(455), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(101)] = { - [sym__simple_statements] = STATE(527), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(487), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(452), - [sym__indent] = ACTIONS(454), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(457), + [sym__indent] = ACTIONS(459), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(102)] = { - [sym__simple_statements] = STATE(439), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(539), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(456), - [sym__indent] = ACTIONS(458), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(461), + [sym__indent] = ACTIONS(463), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(103)] = { - [sym__simple_statements] = STATE(485), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(457), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(460), - [sym__indent] = ACTIONS(462), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(465), + [sym__indent] = ACTIONS(467), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(104)] = { - [sym__simple_statements] = STATE(504), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(590), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(464), - [sym__indent] = ACTIONS(466), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(469), + [sym__indent] = ACTIONS(471), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(105)] = { - [sym__simple_statements] = STATE(589), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(458), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(468), - [sym__indent] = ACTIONS(470), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(473), + [sym__indent] = ACTIONS(475), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(106)] = { - [sym__simple_statements] = STATE(459), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(1216), + [sym_import_statement] = STATE(1402), + [sym_future_import_statement] = STATE(1402), + [sym_import_from_statement] = STATE(1402), + [sym_print_statement] = STATE(1402), + [sym_assert_statement] = STATE(1402), + [sym_expression_statement] = STATE(1402), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1402), + [sym_delete_statement] = STATE(1402), + [sym_raise_statement] = STATE(1402), + [sym_pass_statement] = STATE(1402), + [sym_break_statement] = STATE(1402), + [sym_continue_statement] = STATE(1402), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1402), + [sym_nonlocal_statement] = STATE(1402), + [sym_exec_statement] = STATE(1402), + [sym_type_alias_statement] = STATE(1402), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(472), - [sym__indent] = ACTIONS(474), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(477), + [sym__indent] = ACTIONS(479), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(107)] = { - [sym__simple_statements] = STATE(488), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(498), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(476), - [sym__indent] = ACTIONS(478), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(481), + [sym__indent] = ACTIONS(483), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(108)] = { - [sym__simple_statements] = STATE(496), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(505), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(480), - [sym__indent] = ACTIONS(482), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(485), + [sym__indent] = ACTIONS(487), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(109)] = { - [sym__simple_statements] = STATE(531), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(526), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(484), - [sym__indent] = ACTIONS(486), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(489), + [sym__indent] = ACTIONS(491), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(110)] = { - [sym__simple_statements] = STATE(593), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(596), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(488), - [sym__indent] = ACTIONS(490), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(493), + [sym__indent] = ACTIONS(495), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(111)] = { - [sym__simple_statements] = STATE(608), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(607), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(492), - [sym__indent] = ACTIONS(494), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(497), + [sym__indent] = ACTIONS(499), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(112)] = { - [sym__simple_statements] = STATE(440), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(474), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(496), - [sym__indent] = ACTIONS(498), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(501), + [sym__indent] = ACTIONS(503), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(113)] = { - [sym__simple_statements] = STATE(611), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(599), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(500), - [sym__indent] = ACTIONS(502), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(505), + [sym__indent] = ACTIONS(507), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(114)] = { - [sym__simple_statements] = STATE(464), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(449), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(504), - [sym__indent] = ACTIONS(506), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(509), + [sym__indent] = ACTIONS(511), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(115)] = { - [sym__simple_statements] = STATE(506), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(462), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(508), - [sym__indent] = ACTIONS(510), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(513), + [sym__indent] = ACTIONS(515), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(116)] = { - [sym__simple_statements] = STATE(599), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(518), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(512), - [sym__indent] = ACTIONS(514), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(517), + [sym__indent] = ACTIONS(519), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(117)] = { - [sym__simple_statements] = STATE(537), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(532), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(516), - [sym__indent] = ACTIONS(518), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(521), + [sym__indent] = ACTIONS(523), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(118)] = { - [sym__simple_statements] = STATE(602), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(443), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(520), - [sym__indent] = ACTIONS(522), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(525), + [sym__indent] = ACTIONS(527), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(119)] = { - [sym__simple_statements] = STATE(444), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(463), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(524), - [sym__indent] = ACTIONS(526), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(529), + [sym__indent] = ACTIONS(531), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(120)] = { - [sym__simple_statements] = STATE(451), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(555), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(528), - [sym__indent] = ACTIONS(530), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(533), + [sym__indent] = ACTIONS(535), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(121)] = { - [sym__simple_statements] = STATE(613), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(543), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(532), - [sym__indent] = ACTIONS(534), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(537), + [sym__indent] = ACTIONS(539), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(122)] = { - [sym__simple_statements] = STATE(445), - [sym_import_statement] = STATE(1332), - [sym_future_import_statement] = STATE(1332), - [sym_import_from_statement] = STATE(1332), - [sym_print_statement] = STATE(1332), - [sym_assert_statement] = STATE(1332), - [sym_expression_statement] = STATE(1332), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1332), - [sym_delete_statement] = STATE(1332), - [sym_raise_statement] = STATE(1332), - [sym_pass_statement] = STATE(1332), - [sym_break_statement] = STATE(1332), - [sym_continue_statement] = STATE(1332), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1332), - [sym_nonlocal_statement] = STATE(1332), - [sym_exec_statement] = STATE(1332), - [sym_type_alias_statement] = STATE(1332), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(608), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(536), - [sym__indent] = ACTIONS(538), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(541), + [sym__indent] = ACTIONS(543), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(123)] = { - [sym__simple_statements] = STATE(500), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(1183), + [sym_import_statement] = STATE(1402), + [sym_future_import_statement] = STATE(1402), + [sym_import_from_statement] = STATE(1402), + [sym_print_statement] = STATE(1402), + [sym_assert_statement] = STATE(1402), + [sym_expression_statement] = STATE(1402), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1402), + [sym_delete_statement] = STATE(1402), + [sym_raise_statement] = STATE(1402), + [sym_pass_statement] = STATE(1402), + [sym_break_statement] = STATE(1402), + [sym_continue_statement] = STATE(1402), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1402), + [sym_nonlocal_statement] = STATE(1402), + [sym_exec_statement] = STATE(1402), + [sym_type_alias_statement] = STATE(1402), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(540), - [sym__indent] = ACTIONS(542), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(545), + [sym__indent] = ACTIONS(547), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(124)] = { - [sym__simple_statements] = STATE(1187), - [sym_import_statement] = STATE(1373), - [sym_future_import_statement] = STATE(1373), - [sym_import_from_statement] = STATE(1373), - [sym_print_statement] = STATE(1373), - [sym_assert_statement] = STATE(1373), - [sym_expression_statement] = STATE(1373), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1373), - [sym_delete_statement] = STATE(1373), - [sym_raise_statement] = STATE(1373), - [sym_pass_statement] = STATE(1373), - [sym_break_statement] = STATE(1373), - [sym_continue_statement] = STATE(1373), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1373), - [sym_nonlocal_statement] = STATE(1373), - [sym_exec_statement] = STATE(1373), - [sym_type_alias_statement] = STATE(1373), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(446), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(544), - [sym__indent] = ACTIONS(546), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(549), + [sym__indent] = ACTIONS(551), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(125)] = { - [sym__simple_statements] = STATE(543), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(548), + [sym_import_statement] = STATE(1346), + [sym_future_import_statement] = STATE(1346), + [sym_import_from_statement] = STATE(1346), + [sym_print_statement] = STATE(1346), + [sym_assert_statement] = STATE(1346), + [sym_expression_statement] = STATE(1346), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1346), + [sym_delete_statement] = STATE(1346), + [sym_raise_statement] = STATE(1346), + [sym_pass_statement] = STATE(1346), + [sym_break_statement] = STATE(1346), + [sym_continue_statement] = STATE(1346), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1346), + [sym_nonlocal_statement] = STATE(1346), + [sym_exec_statement] = STATE(1346), + [sym_type_alias_statement] = STATE(1346), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(548), - [sym__indent] = ACTIONS(550), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(553), + [sym__indent] = ACTIONS(555), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(126)] = { - [sym__simple_statements] = STATE(481), - [sym_import_statement] = STATE(1348), - [sym_future_import_statement] = STATE(1348), - [sym_import_from_statement] = STATE(1348), - [sym_print_statement] = STATE(1348), - [sym_assert_statement] = STATE(1348), - [sym_expression_statement] = STATE(1348), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1348), - [sym_delete_statement] = STATE(1348), - [sym_raise_statement] = STATE(1348), - [sym_pass_statement] = STATE(1348), - [sym_break_statement] = STATE(1348), - [sym_continue_statement] = STATE(1348), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1348), - [sym_nonlocal_statement] = STATE(1348), - [sym_exec_statement] = STATE(1348), - [sym_type_alias_statement] = STATE(1348), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym__simple_statements] = STATE(585), + [sym_import_statement] = STATE(1345), + [sym_future_import_statement] = STATE(1345), + [sym_import_from_statement] = STATE(1345), + [sym_print_statement] = STATE(1345), + [sym_assert_statement] = STATE(1345), + [sym_expression_statement] = STATE(1345), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1345), + [sym_delete_statement] = STATE(1345), + [sym_raise_statement] = STATE(1345), + [sym_pass_statement] = STATE(1345), + [sym_break_statement] = STATE(1345), + [sym_continue_statement] = STATE(1345), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1345), + [sym_nonlocal_statement] = STATE(1345), + [sym_exec_statement] = STATE(1345), + [sym_type_alias_statement] = STATE(1345), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(552), - [sym__indent] = ACTIONS(554), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(557), + [sym__indent] = ACTIONS(559), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(127)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(556), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(561), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(128)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(558), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(563), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(129)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(560), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(565), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(130)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(562), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(567), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(131)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(564), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(569), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(132)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(566), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__newline] = ACTIONS(571), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(133)] = { - [sym_import_statement] = STATE(1517), - [sym_future_import_statement] = STATE(1517), - [sym_import_from_statement] = STATE(1517), - [sym_print_statement] = STATE(1517), - [sym_assert_statement] = STATE(1517), - [sym_expression_statement] = STATE(1517), - [sym_named_expression] = STATE(1158), - [sym_return_statement] = STATE(1517), - [sym_delete_statement] = STATE(1517), - [sym_raise_statement] = STATE(1517), - [sym_pass_statement] = STATE(1517), - [sym_break_statement] = STATE(1517), - [sym_continue_statement] = STATE(1517), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_global_statement] = STATE(1517), - [sym_nonlocal_statement] = STATE(1517), - [sym_exec_statement] = STATE(1517), - [sym_type_alias_statement] = STATE(1517), - [sym_expression_list] = STATE(1551), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1185), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1551), - [sym_augmented_assignment] = STATE(1551), - [sym_pattern_list] = STATE(1024), - [sym_yield] = STATE(1551), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [sym_import_statement] = STATE(1578), + [sym_future_import_statement] = STATE(1578), + [sym_import_from_statement] = STATE(1578), + [sym_print_statement] = STATE(1578), + [sym_assert_statement] = STATE(1578), + [sym_expression_statement] = STATE(1578), + [sym_named_expression] = STATE(1126), + [sym_return_statement] = STATE(1578), + [sym_delete_statement] = STATE(1578), + [sym_raise_statement] = STATE(1578), + [sym_pass_statement] = STATE(1578), + [sym_break_statement] = STATE(1578), + [sym_continue_statement] = STATE(1578), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_global_statement] = STATE(1578), + [sym_nonlocal_statement] = STATE(1578), + [sym_exec_statement] = STATE(1578), + [sym_type_alias_statement] = STATE(1578), + [sym_expression_list] = STATE(1545), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1191), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1545), + [sym_augmented_assignment] = STATE(1545), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1545), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_import] = ACTIONS(9), - [anon_sym_from] = ACTIONS(11), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(17), - [anon_sym_assert] = ACTIONS(19), - [anon_sym_return] = ACTIONS(21), - [anon_sym_del] = ACTIONS(23), - [anon_sym_raise] = ACTIONS(25), - [anon_sym_pass] = ACTIONS(27), - [anon_sym_break] = ACTIONS(29), - [anon_sym_continue] = ACTIONS(31), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_global] = ACTIONS(57), - [anon_sym_nonlocal] = ACTIONS(59), - [anon_sym_exec] = ACTIONS(61), - [anon_sym_type] = ACTIONS(63), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(134)] = { - [sym_primary_expression] = STATE(810), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_attribute] = STATE(908), - [sym_subscript] = STATE(908), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [sym_identifier] = ACTIONS(77), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(568), - [anon_sym_COMMA] = ACTIONS(270), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(570), - [anon_sym_GT_GT] = ACTIONS(265), - [anon_sym_COLON_EQ] = ACTIONS(278), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(280), - [anon_sym_async] = ACTIONS(570), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(570), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(572), - [anon_sym_PLUS] = ACTIONS(572), - [anon_sym_LBRACK] = ACTIONS(574), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(265), - [anon_sym_EQ] = ACTIONS(280), - [anon_sym_exec] = ACTIONS(570), - [anon_sym_type] = ACTIONS(570), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [anon_sym_PLUS_EQ] = ACTIONS(302), - [anon_sym_DASH_EQ] = ACTIONS(302), - [anon_sym_STAR_EQ] = ACTIONS(302), - [anon_sym_SLASH_EQ] = ACTIONS(302), - [anon_sym_AT_EQ] = ACTIONS(302), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(302), - [anon_sym_PERCENT_EQ] = ACTIONS(302), - [anon_sym_STAR_STAR_EQ] = ACTIONS(302), - [anon_sym_GT_GT_EQ] = ACTIONS(302), - [anon_sym_LT_LT_EQ] = ACTIONS(302), - [anon_sym_AMP_EQ] = ACTIONS(302), - [anon_sym_CARET_EQ] = ACTIONS(302), - [anon_sym_PIPE_EQ] = ACTIONS(302), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym_primary_expression] = STATE(799), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_attribute] = STATE(950), + [sym_subscript] = STATE(950), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [sym_identifier] = ACTIONS(79), + [anon_sym_lazy] = ACTIONS(573), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(575), + [anon_sym_COMMA] = ACTIONS(277), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(573), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON_EQ] = ACTIONS(283), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(285), + [anon_sym_async] = ACTIONS(573), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(573), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(577), + [anon_sym_PLUS] = ACTIONS(577), + [anon_sym_LBRACK] = ACTIONS(579), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(272), + [anon_sym_EQ] = ACTIONS(285), + [anon_sym_exec] = ACTIONS(573), + [anon_sym_type] = ACTIONS(573), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [anon_sym_PLUS_EQ] = ACTIONS(307), + [anon_sym_DASH_EQ] = ACTIONS(307), + [anon_sym_STAR_EQ] = ACTIONS(307), + [anon_sym_SLASH_EQ] = ACTIONS(307), + [anon_sym_AT_EQ] = ACTIONS(307), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), + [anon_sym_PERCENT_EQ] = ACTIONS(307), + [anon_sym_STAR_STAR_EQ] = ACTIONS(307), + [anon_sym_GT_GT_EQ] = ACTIONS(307), + [anon_sym_LT_LT_EQ] = ACTIONS(307), + [anon_sym_AMP_EQ] = ACTIONS(307), + [anon_sym_CARET_EQ] = ACTIONS(307), + [anon_sym_PIPE_EQ] = ACTIONS(307), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(581), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(298), - [sym__newline] = ACTIONS(298), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(135)] = { - [sym_primary_expression] = STATE(735), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(580), - [anon_sym_COMMA] = ACTIONS(580), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(766), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_COMMA] = ACTIONS(587), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(265), - [anon_sym_COLON_EQ] = ACTIONS(585), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(587), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON_EQ] = ACTIONS(590), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(592), [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(265), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(589), - [anon_sym_PLUS] = ACTIONS(589), - [anon_sym_LBRACK] = ACTIONS(591), - [anon_sym_RBRACK] = ACTIONS(580), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(265), - [anon_sym_EQ] = ACTIONS(587), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(272), + [anon_sym_EQ] = ACTIONS(592), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [anon_sym_PLUS_EQ] = ACTIONS(593), - [anon_sym_DASH_EQ] = ACTIONS(593), - [anon_sym_STAR_EQ] = ACTIONS(593), - [anon_sym_SLASH_EQ] = ACTIONS(593), - [anon_sym_AT_EQ] = ACTIONS(593), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(593), - [anon_sym_PERCENT_EQ] = ACTIONS(593), - [anon_sym_STAR_STAR_EQ] = ACTIONS(593), - [anon_sym_GT_GT_EQ] = ACTIONS(593), - [anon_sym_LT_LT_EQ] = ACTIONS(593), - [anon_sym_AMP_EQ] = ACTIONS(593), - [anon_sym_CARET_EQ] = ACTIONS(593), - [anon_sym_PIPE_EQ] = ACTIONS(593), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(595), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [anon_sym_PLUS_EQ] = ACTIONS(598), + [anon_sym_DASH_EQ] = ACTIONS(598), + [anon_sym_STAR_EQ] = ACTIONS(598), + [anon_sym_SLASH_EQ] = ACTIONS(598), + [anon_sym_AT_EQ] = ACTIONS(598), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(598), + [anon_sym_PERCENT_EQ] = ACTIONS(598), + [anon_sym_STAR_STAR_EQ] = ACTIONS(598), + [anon_sym_GT_GT_EQ] = ACTIONS(598), + [anon_sym_LT_LT_EQ] = ACTIONS(598), + [anon_sym_AMP_EQ] = ACTIONS(598), + [anon_sym_CARET_EQ] = ACTIONS(598), + [anon_sym_PIPE_EQ] = ACTIONS(598), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(136)] = { - [sym_primary_expression] = STATE(735), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(766), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(585), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(265), - [anon_sym_else] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(590), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(272), + [anon_sym_else] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(265), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(296), - [anon_sym_PLUS] = ACTIONS(296), - [anon_sym_LBRACK] = ACTIONS(591), - [anon_sym_RBRACK] = ACTIONS(298), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(265), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(301), + [anon_sym_PLUS] = ACTIONS(301), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(303), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(595), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(137)] = { - [sym_primary_expression] = STATE(735), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(766), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(298), - [anon_sym_else] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(303), + [anon_sym_else] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(265), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(296), - [anon_sym_PLUS] = ACTIONS(296), - [anon_sym_LBRACK] = ACTIONS(591), - [anon_sym_RBRACK] = ACTIONS(298), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(265), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(301), + [anon_sym_PLUS] = ACTIONS(301), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(303), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(595), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(138)] = { - [sym_primary_expression] = STATE(760), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(597), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_as] = ACTIONS(265), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_as] = ACTIONS(272), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(599), - [anon_sym_if] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(604), + [anon_sym_if] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(265), - [anon_sym_in] = ACTIONS(265), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(601), - [anon_sym_PLUS] = ACTIONS(601), - [anon_sym_LBRACK] = ACTIONS(603), - [anon_sym_RBRACK] = ACTIONS(298), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(606), + [anon_sym_PLUS] = ACTIONS(606), + [anon_sym_LBRACK] = ACTIONS(608), + [anon_sym_RBRACK] = ACTIONS(303), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(601), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(605), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(606), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(610), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(139)] = { - [sym_primary_expression] = STATE(735), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(593), - [anon_sym_COMMA] = ACTIONS(593), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(593), - [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(587), - [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(589), - [anon_sym_PLUS] = ACTIONS(589), - [anon_sym_LBRACK] = ACTIONS(591), - [anon_sym_RBRACK] = ACTIONS(593), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(265), - [anon_sym_EQ] = ACTIONS(593), - [anon_sym_exec] = ACTIONS(583), - [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_PLUS_EQ] = ACTIONS(593), - [anon_sym_DASH_EQ] = ACTIONS(593), - [anon_sym_STAR_EQ] = ACTIONS(593), - [anon_sym_SLASH_EQ] = ACTIONS(593), - [anon_sym_AT_EQ] = ACTIONS(593), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(593), - [anon_sym_PERCENT_EQ] = ACTIONS(593), - [anon_sym_STAR_STAR_EQ] = ACTIONS(593), - [anon_sym_GT_GT_EQ] = ACTIONS(593), - [anon_sym_LT_LT_EQ] = ACTIONS(593), - [anon_sym_AMP_EQ] = ACTIONS(593), - [anon_sym_CARET_EQ] = ACTIONS(593), - [anon_sym_PIPE_EQ] = ACTIONS(593), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(595), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [sym_primary_expression] = STATE(805), + [sym_binary_operator] = STATE(949), + [sym_unary_operator] = STATE(949), + [sym_attribute] = STATE(949), + [sym_subscript] = STATE(949), + [sym_call] = STATE(949), + [sym_list] = STATE(949), + [sym_set] = STATE(949), + [sym_tuple] = STATE(949), + [sym_dictionary] = STATE(949), + [sym_list_comprehension] = STATE(949), + [sym_dictionary_comprehension] = STATE(949), + [sym_set_comprehension] = STATE(949), + [sym_generator_expression] = STATE(949), + [sym_parenthesized_expression] = STATE(949), + [sym_concatenated_string] = STATE(949), + [sym_string] = STATE(781), + [sym_concatenated_template_string] = STATE(949), + [sym_template_string] = STATE(782), + [sym_await] = STATE(949), + [sym_identifier] = ACTIONS(612), + [anon_sym_lazy] = ACTIONS(614), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(616), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(614), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(618), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(614), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(614), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(620), + [anon_sym_PLUS] = ACTIONS(620), + [anon_sym_LBRACK] = ACTIONS(622), + [anon_sym_LBRACE] = ACTIONS(624), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), + [anon_sym_exec] = ACTIONS(614), + [anon_sym_type] = ACTIONS(614), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(620), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(626), + [anon_sym_COLON2] = ACTIONS(303), + [sym_type_conversion] = ACTIONS(303), + [sym_integer] = ACTIONS(612), + [sym_float] = ACTIONS(626), + [anon_sym_await] = ACTIONS(628), + [sym_true] = ACTIONS(612), + [sym_false] = ACTIONS(612), + [sym_none] = ACTIONS(612), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(630), + [sym__template_string_start] = ACTIONS(632), }, [STATE(140)] = { - [sym_primary_expression] = STATE(810), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_attribute] = STATE(908), - [sym_subscript] = STATE(908), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [sym_identifier] = ACTIONS(77), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_from] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(568), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(570), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(278), - [anon_sym_if] = ACTIONS(265), - [anon_sym_async] = ACTIONS(570), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(570), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(574), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(265), - [anon_sym_exec] = ACTIONS(570), - [anon_sym_type] = ACTIONS(570), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym_primary_expression] = STATE(799), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_attribute] = STATE(950), + [sym_subscript] = STATE(950), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [sym_identifier] = ACTIONS(79), + [anon_sym_lazy] = ACTIONS(573), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_from] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(575), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(573), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(283), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(573), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(573), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(579), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), + [anon_sym_exec] = ACTIONS(573), + [anon_sym_type] = ACTIONS(573), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(581), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(298), - [sym__newline] = ACTIONS(298), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(141)] = { - [sym_primary_expression] = STATE(785), - [sym_binary_operator] = STATE(924), - [sym_unary_operator] = STATE(924), - [sym_attribute] = STATE(924), - [sym_subscript] = STATE(924), - [sym_call] = STATE(924), - [sym_list] = STATE(924), - [sym_set] = STATE(924), - [sym_tuple] = STATE(924), - [sym_dictionary] = STATE(924), - [sym_list_comprehension] = STATE(924), - [sym_dictionary_comprehension] = STATE(924), - [sym_set_comprehension] = STATE(924), - [sym_generator_expression] = STATE(924), - [sym_parenthesized_expression] = STATE(924), - [sym_concatenated_string] = STATE(924), - [sym_string] = STATE(767), - [sym_concatenated_template_string] = STATE(924), - [sym_template_string] = STATE(768), - [sym_await] = STATE(924), - [sym_identifier] = ACTIONS(607), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(609), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(611), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(613), - [anon_sym_if] = ACTIONS(265), - [anon_sym_async] = ACTIONS(611), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(611), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(615), - [anon_sym_PLUS] = ACTIONS(615), - [anon_sym_LBRACK] = ACTIONS(617), - [anon_sym_LBRACE] = ACTIONS(619), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(265), - [anon_sym_exec] = ACTIONS(611), - [anon_sym_type] = ACTIONS(611), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(615), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(621), - [anon_sym_COLON2] = ACTIONS(298), - [sym_type_conversion] = ACTIONS(298), - [sym_integer] = ACTIONS(607), - [sym_float] = ACTIONS(621), - [anon_sym_await] = ACTIONS(623), - [sym_true] = ACTIONS(607), - [sym_false] = ACTIONS(607), - [sym_none] = ACTIONS(607), + [sym_primary_expression] = STATE(766), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(307), + [anon_sym_COMMA] = ACTIONS(307), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(583), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(307), + [anon_sym_async] = ACTIONS(583), + [anon_sym_in] = ACTIONS(285), + [anon_sym_match] = ACTIONS(583), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(272), + [anon_sym_EQ] = ACTIONS(307), + [anon_sym_exec] = ACTIONS(583), + [anon_sym_type] = ACTIONS(583), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_PLUS_EQ] = ACTIONS(307), + [anon_sym_DASH_EQ] = ACTIONS(307), + [anon_sym_STAR_EQ] = ACTIONS(307), + [anon_sym_SLASH_EQ] = ACTIONS(307), + [anon_sym_AT_EQ] = ACTIONS(307), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), + [anon_sym_PERCENT_EQ] = ACTIONS(307), + [anon_sym_STAR_STAR_EQ] = ACTIONS(307), + [anon_sym_GT_GT_EQ] = ACTIONS(307), + [anon_sym_LT_LT_EQ] = ACTIONS(307), + [anon_sym_AMP_EQ] = ACTIONS(307), + [anon_sym_CARET_EQ] = ACTIONS(307), + [anon_sym_PIPE_EQ] = ACTIONS(307), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(625), - [sym__template_string_start] = ACTIONS(627), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(142)] = { - [sym_primary_expression] = STATE(735), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(302), - [anon_sym_COMMA] = ACTIONS(302), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_as] = ACTIONS(272), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(302), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(280), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(265), - [anon_sym_DASH] = ACTIONS(589), - [anon_sym_PLUS] = ACTIONS(589), - [anon_sym_LBRACK] = ACTIONS(591), - [anon_sym_RBRACK] = ACTIONS(302), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(265), - [anon_sym_EQ] = ACTIONS(302), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(606), + [anon_sym_PLUS] = ACTIONS(606), + [anon_sym_LBRACK] = ACTIONS(608), + [anon_sym_RBRACK] = ACTIONS(303), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(265), - [anon_sym_SLASH_SLASH] = ACTIONS(265), - [anon_sym_AMP] = ACTIONS(265), - [anon_sym_CARET] = ACTIONS(265), - [anon_sym_LT_LT] = ACTIONS(265), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_PLUS_EQ] = ACTIONS(302), - [anon_sym_DASH_EQ] = ACTIONS(302), - [anon_sym_STAR_EQ] = ACTIONS(302), - [anon_sym_SLASH_EQ] = ACTIONS(302), - [anon_sym_AT_EQ] = ACTIONS(302), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(302), - [anon_sym_PERCENT_EQ] = ACTIONS(302), - [anon_sym_STAR_STAR_EQ] = ACTIONS(302), - [anon_sym_GT_GT_EQ] = ACTIONS(302), - [anon_sym_LT_LT_EQ] = ACTIONS(302), - [anon_sym_AMP_EQ] = ACTIONS(302), - [anon_sym_CARET_EQ] = ACTIONS(302), - [anon_sym_PIPE_EQ] = ACTIONS(302), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(595), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(606), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(610), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(143)] = { - [sym_primary_expression] = STATE(760), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(597), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_as] = ACTIONS(265), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(766), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(598), + [anon_sym_COMMA] = ACTIONS(598), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_if] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(598), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(265), - [anon_sym_in] = ACTIONS(265), + [anon_sym_in] = ACTIONS(592), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(601), - [anon_sym_PLUS] = ACTIONS(601), - [anon_sym_LBRACK] = ACTIONS(603), - [anon_sym_RBRACK] = ACTIONS(298), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(598), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(272), + [anon_sym_EQ] = ACTIONS(598), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(601), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(605), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_PLUS_EQ] = ACTIONS(598), + [anon_sym_DASH_EQ] = ACTIONS(598), + [anon_sym_STAR_EQ] = ACTIONS(598), + [anon_sym_SLASH_EQ] = ACTIONS(598), + [anon_sym_AT_EQ] = ACTIONS(598), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(598), + [anon_sym_PERCENT_EQ] = ACTIONS(598), + [anon_sym_STAR_STAR_EQ] = ACTIONS(598), + [anon_sym_GT_GT_EQ] = ACTIONS(598), + [anon_sym_LT_LT_EQ] = ACTIONS(598), + [anon_sym_AMP_EQ] = ACTIONS(598), + [anon_sym_CARET_EQ] = ACTIONS(598), + [anon_sym_PIPE_EQ] = ACTIONS(598), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(144)] = { - [sym_primary_expression] = STATE(848), - [sym_binary_operator] = STATE(953), - [sym_unary_operator] = STATE(953), - [sym_attribute] = STATE(953), - [sym_subscript] = STATE(953), - [sym_call] = STATE(953), - [sym_list] = STATE(953), - [sym_set] = STATE(953), - [sym_tuple] = STATE(953), - [sym_dictionary] = STATE(953), - [sym_list_comprehension] = STATE(953), - [sym_dictionary_comprehension] = STATE(953), - [sym_set_comprehension] = STATE(953), - [sym_generator_expression] = STATE(953), - [sym_parenthesized_expression] = STATE(953), - [sym_concatenated_string] = STATE(953), - [sym_string] = STATE(794), - [sym_concatenated_template_string] = STATE(953), - [sym_template_string] = STATE(795), - [sym_await] = STATE(953), - [sym_identifier] = ACTIONS(629), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(631), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_as] = ACTIONS(265), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(633), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(635), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(265), - [anon_sym_async] = ACTIONS(633), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(633), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(637), - [anon_sym_PLUS] = ACTIONS(637), - [anon_sym_LBRACK] = ACTIONS(639), - [anon_sym_LBRACE] = ACTIONS(641), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_exec] = ACTIONS(633), - [anon_sym_type] = ACTIONS(633), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(637), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(643), - [sym_integer] = ACTIONS(629), - [sym_float] = ACTIONS(643), - [anon_sym_await] = ACTIONS(645), - [sym_true] = ACTIONS(629), - [sym_false] = ACTIONS(629), - [sym_none] = ACTIONS(629), - [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(647), - [sym__template_string_start] = ACTIONS(649), - }, - [STATE(145)] = { - [sym_primary_expression] = STATE(785), - [sym_binary_operator] = STATE(924), - [sym_unary_operator] = STATE(924), - [sym_attribute] = STATE(924), - [sym_subscript] = STATE(924), - [sym_call] = STATE(924), - [sym_list] = STATE(924), - [sym_set] = STATE(924), - [sym_tuple] = STATE(924), - [sym_dictionary] = STATE(924), - [sym_list_comprehension] = STATE(924), - [sym_dictionary_comprehension] = STATE(924), - [sym_set_comprehension] = STATE(924), - [sym_generator_expression] = STATE(924), - [sym_parenthesized_expression] = STATE(924), - [sym_concatenated_string] = STATE(924), - [sym_string] = STATE(767), - [sym_concatenated_template_string] = STATE(924), - [sym_template_string] = STATE(768), - [sym_await] = STATE(924), - [sym_identifier] = ACTIONS(607), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(609), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(611), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_if] = ACTIONS(265), - [anon_sym_async] = ACTIONS(611), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(611), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(615), - [anon_sym_PLUS] = ACTIONS(615), - [anon_sym_LBRACK] = ACTIONS(617), - [anon_sym_LBRACE] = ACTIONS(619), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(265), - [anon_sym_exec] = ACTIONS(611), - [anon_sym_type] = ACTIONS(611), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(615), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(621), - [anon_sym_COLON2] = ACTIONS(298), - [sym_type_conversion] = ACTIONS(298), - [sym_integer] = ACTIONS(607), - [sym_float] = ACTIONS(621), - [anon_sym_await] = ACTIONS(623), - [sym_true] = ACTIONS(607), - [sym_false] = ACTIONS(607), - [sym_none] = ACTIONS(607), - [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(625), - [sym__template_string_start] = ACTIONS(627), - }, - [STATE(146)] = { - [sym_primary_expression] = STATE(760), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(597), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(599), - [anon_sym_if] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(604), + [anon_sym_if] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(265), - [anon_sym_in] = ACTIONS(265), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(601), - [anon_sym_PLUS] = ACTIONS(601), - [anon_sym_LBRACK] = ACTIONS(603), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(651), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(606), + [anon_sym_PLUS] = ACTIONS(606), + [anon_sym_LBRACK] = ACTIONS(608), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(634), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(601), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(605), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(606), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(610), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, - [STATE(147)] = { - [sym_primary_expression] = STATE(790), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(653), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), + [STATE(145)] = { + [sym_primary_expression] = STATE(808), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(636), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(655), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(638), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(265), - [anon_sym_in] = ACTIONS(265), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(657), - [anon_sym_PLUS] = ACTIONS(657), - [anon_sym_LBRACK] = ACTIONS(659), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(640), + [anon_sym_PLUS] = ACTIONS(640), + [anon_sym_LBRACK] = ACTIONS(642), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(657), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(661), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(640), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(644), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), + [sym_comment] = ACTIONS(3), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), + }, + [STATE(146)] = { + [sym_primary_expression] = STATE(839), + [sym_binary_operator] = STATE(985), + [sym_unary_operator] = STATE(985), + [sym_attribute] = STATE(985), + [sym_subscript] = STATE(985), + [sym_call] = STATE(985), + [sym_list] = STATE(985), + [sym_set] = STATE(985), + [sym_tuple] = STATE(985), + [sym_dictionary] = STATE(985), + [sym_list_comprehension] = STATE(985), + [sym_dictionary_comprehension] = STATE(985), + [sym_set_comprehension] = STATE(985), + [sym_generator_expression] = STATE(985), + [sym_parenthesized_expression] = STATE(985), + [sym_concatenated_string] = STATE(985), + [sym_string] = STATE(790), + [sym_concatenated_template_string] = STATE(985), + [sym_template_string] = STATE(791), + [sym_await] = STATE(985), + [sym_identifier] = ACTIONS(646), + [anon_sym_lazy] = ACTIONS(648), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(650), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_as] = ACTIONS(272), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(648), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(652), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(272), + [anon_sym_async] = ACTIONS(648), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(648), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(654), + [anon_sym_PLUS] = ACTIONS(654), + [anon_sym_LBRACK] = ACTIONS(656), + [anon_sym_LBRACE] = ACTIONS(658), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_exec] = ACTIONS(648), + [anon_sym_type] = ACTIONS(648), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(654), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(660), + [sym_integer] = ACTIONS(646), + [sym_float] = ACTIONS(660), + [anon_sym_await] = ACTIONS(662), + [sym_true] = ACTIONS(646), + [sym_false] = ACTIONS(646), + [sym_none] = ACTIONS(646), + [sym_comment] = ACTIONS(3), + [sym__string_start] = ACTIONS(664), + [sym__template_string_start] = ACTIONS(666), + }, + [STATE(147)] = { + [sym_primary_expression] = STATE(805), + [sym_binary_operator] = STATE(949), + [sym_unary_operator] = STATE(949), + [sym_attribute] = STATE(949), + [sym_subscript] = STATE(949), + [sym_call] = STATE(949), + [sym_list] = STATE(949), + [sym_set] = STATE(949), + [sym_tuple] = STATE(949), + [sym_dictionary] = STATE(949), + [sym_list_comprehension] = STATE(949), + [sym_dictionary_comprehension] = STATE(949), + [sym_set_comprehension] = STATE(949), + [sym_generator_expression] = STATE(949), + [sym_parenthesized_expression] = STATE(949), + [sym_concatenated_string] = STATE(949), + [sym_string] = STATE(781), + [sym_concatenated_template_string] = STATE(949), + [sym_template_string] = STATE(782), + [sym_await] = STATE(949), + [sym_identifier] = ACTIONS(612), + [anon_sym_lazy] = ACTIONS(614), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(616), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(614), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(614), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(614), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(620), + [anon_sym_PLUS] = ACTIONS(620), + [anon_sym_LBRACK] = ACTIONS(622), + [anon_sym_LBRACE] = ACTIONS(624), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), + [anon_sym_exec] = ACTIONS(614), + [anon_sym_type] = ACTIONS(614), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(620), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(626), + [anon_sym_COLON2] = ACTIONS(303), + [sym_type_conversion] = ACTIONS(303), + [sym_integer] = ACTIONS(612), + [sym_float] = ACTIONS(626), + [anon_sym_await] = ACTIONS(628), + [sym_true] = ACTIONS(612), + [sym_false] = ACTIONS(612), + [sym_none] = ACTIONS(612), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(630), + [sym__template_string_start] = ACTIONS(632), }, [STATE(148)] = { - [sym_primary_expression] = STATE(760), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(597), - [anon_sym_RPAREN] = ACTIONS(270), - [anon_sym_COMMA] = ACTIONS(270), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(587), + [anon_sym_COMMA] = ACTIONS(587), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(599), - [anon_sym_if] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(604), + [anon_sym_if] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(265), - [anon_sym_in] = ACTIONS(265), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(601), - [anon_sym_PLUS] = ACTIONS(601), - [anon_sym_LBRACK] = ACTIONS(603), - [anon_sym_RBRACK] = ACTIONS(270), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(298), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(606), + [anon_sym_PLUS] = ACTIONS(606), + [anon_sym_LBRACK] = ACTIONS(608), + [anon_sym_RBRACK] = ACTIONS(587), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(303), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(601), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(605), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(606), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(610), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(149)] = { - [sym_primary_expression] = STATE(810), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_attribute] = STATE(908), - [sym_subscript] = STATE(908), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), - [sym_identifier] = ACTIONS(77), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_from] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(568), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(570), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_if] = ACTIONS(265), - [anon_sym_async] = ACTIONS(570), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(570), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(574), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(265), - [anon_sym_exec] = ACTIONS(570), - [anon_sym_type] = ACTIONS(570), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(576), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(277), + [anon_sym_COMMA] = ACTIONS(277), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(583), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(604), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(583), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(583), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(606), + [anon_sym_PLUS] = ACTIONS(606), + [anon_sym_LBRACK] = ACTIONS(608), + [anon_sym_RBRACK] = ACTIONS(277), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_exec] = ACTIONS(583), + [anon_sym_type] = ACTIONS(583), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(606), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(610), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(298), - [sym__newline] = ACTIONS(298), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(150)] = { - [sym_primary_expression] = STATE(848), - [sym_binary_operator] = STATE(953), - [sym_unary_operator] = STATE(953), - [sym_attribute] = STATE(953), - [sym_subscript] = STATE(953), - [sym_call] = STATE(953), - [sym_list] = STATE(953), - [sym_set] = STATE(953), - [sym_tuple] = STATE(953), - [sym_dictionary] = STATE(953), - [sym_list_comprehension] = STATE(953), - [sym_dictionary_comprehension] = STATE(953), - [sym_set_comprehension] = STATE(953), - [sym_generator_expression] = STATE(953), - [sym_parenthesized_expression] = STATE(953), - [sym_concatenated_string] = STATE(953), - [sym_string] = STATE(794), - [sym_concatenated_template_string] = STATE(953), - [sym_template_string] = STATE(795), - [sym_await] = STATE(953), - [sym_identifier] = ACTIONS(629), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(631), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_as] = ACTIONS(265), - [anon_sym_STAR] = ACTIONS(265), - [anon_sym_print] = ACTIONS(633), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(298), - [anon_sym_async] = ACTIONS(633), - [anon_sym_in] = ACTIONS(265), - [anon_sym_match] = ACTIONS(633), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(637), - [anon_sym_PLUS] = ACTIONS(637), - [anon_sym_LBRACK] = ACTIONS(639), - [anon_sym_LBRACE] = ACTIONS(641), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_exec] = ACTIONS(633), - [anon_sym_type] = ACTIONS(633), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(637), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(643), - [sym_integer] = ACTIONS(629), - [sym_float] = ACTIONS(643), - [anon_sym_await] = ACTIONS(645), - [sym_true] = ACTIONS(629), - [sym_false] = ACTIONS(629), - [sym_none] = ACTIONS(629), + [sym_primary_expression] = STATE(799), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_attribute] = STATE(950), + [sym_subscript] = STATE(950), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), + [sym_identifier] = ACTIONS(79), + [anon_sym_lazy] = ACTIONS(573), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_from] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(575), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(573), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(573), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(573), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(579), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), + [anon_sym_exec] = ACTIONS(573), + [anon_sym_type] = ACTIONS(573), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(581), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(647), - [sym__template_string_start] = ACTIONS(649), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, [STATE(151)] = { - [sym_primary_expression] = STATE(735), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(578), - [anon_sym_RPAREN] = ACTIONS(298), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(808), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(636), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_COLON_EQ] = ACTIONS(585), - [anon_sym_if] = ACTIONS(265), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(303), [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(265), + [anon_sym_for] = ACTIONS(272), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(296), - [anon_sym_PLUS] = ACTIONS(296), - [anon_sym_LBRACK] = ACTIONS(591), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_STAR_STAR] = ACTIONS(298), - [anon_sym_EQ] = ACTIONS(651), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(640), + [anon_sym_PLUS] = ACTIONS(640), + [anon_sym_LBRACK] = ACTIONS(642), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), + [anon_sym_STAR_STAR] = ACTIONS(303), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(296), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(595), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(640), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(644), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(152)] = { - [sym_primary_expression] = STATE(790), - [sym_binary_operator] = STATE(724), - [sym_unary_operator] = STATE(724), - [sym_attribute] = STATE(724), - [sym_subscript] = STATE(724), - [sym_call] = STATE(724), - [sym_list] = STATE(724), - [sym_set] = STATE(724), - [sym_tuple] = STATE(724), - [sym_dictionary] = STATE(724), - [sym_list_comprehension] = STATE(724), - [sym_dictionary_comprehension] = STATE(724), - [sym_set_comprehension] = STATE(724), - [sym_generator_expression] = STATE(724), - [sym_parenthesized_expression] = STATE(724), - [sym_concatenated_string] = STATE(724), - [sym_string] = STATE(621), - [sym_concatenated_template_string] = STATE(724), - [sym_template_string] = STATE(624), - [sym_await] = STATE(724), - [sym_identifier] = ACTIONS(306), - [anon_sym_DOT] = ACTIONS(265), - [anon_sym_LPAREN] = ACTIONS(653), - [anon_sym_COMMA] = ACTIONS(298), - [anon_sym_STAR] = ACTIONS(265), + [sym_primary_expression] = STATE(839), + [sym_binary_operator] = STATE(985), + [sym_unary_operator] = STATE(985), + [sym_attribute] = STATE(985), + [sym_subscript] = STATE(985), + [sym_call] = STATE(985), + [sym_list] = STATE(985), + [sym_set] = STATE(985), + [sym_tuple] = STATE(985), + [sym_dictionary] = STATE(985), + [sym_list_comprehension] = STATE(985), + [sym_dictionary_comprehension] = STATE(985), + [sym_set_comprehension] = STATE(985), + [sym_generator_expression] = STATE(985), + [sym_parenthesized_expression] = STATE(985), + [sym_concatenated_string] = STATE(985), + [sym_string] = STATE(790), + [sym_concatenated_template_string] = STATE(985), + [sym_template_string] = STATE(791), + [sym_await] = STATE(985), + [sym_identifier] = ACTIONS(646), + [anon_sym_lazy] = ACTIONS(648), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(650), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_as] = ACTIONS(272), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(648), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(303), + [anon_sym_async] = ACTIONS(648), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(648), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(654), + [anon_sym_PLUS] = ACTIONS(654), + [anon_sym_LBRACK] = ACTIONS(656), + [anon_sym_LBRACE] = ACTIONS(658), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_exec] = ACTIONS(648), + [anon_sym_type] = ACTIONS(648), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(654), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(660), + [sym_integer] = ACTIONS(646), + [sym_float] = ACTIONS(660), + [anon_sym_await] = ACTIONS(662), + [sym_true] = ACTIONS(646), + [sym_false] = ACTIONS(646), + [sym_none] = ACTIONS(646), + [sym_comment] = ACTIONS(3), + [sym__string_start] = ACTIONS(664), + [sym__template_string_start] = ACTIONS(666), + }, + [STATE(153)] = { + [sym_primary_expression] = STATE(766), + [sym_binary_operator] = STATE(720), + [sym_unary_operator] = STATE(720), + [sym_attribute] = STATE(720), + [sym_subscript] = STATE(720), + [sym_call] = STATE(720), + [sym_list] = STATE(720), + [sym_set] = STATE(720), + [sym_tuple] = STATE(720), + [sym_dictionary] = STATE(720), + [sym_list_comprehension] = STATE(720), + [sym_dictionary_comprehension] = STATE(720), + [sym_set_comprehension] = STATE(720), + [sym_generator_expression] = STATE(720), + [sym_parenthesized_expression] = STATE(720), + [sym_concatenated_string] = STATE(720), + [sym_string] = STATE(694), + [sym_concatenated_template_string] = STATE(720), + [sym_template_string] = STATE(698), + [sym_await] = STATE(720), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(298), - [anon_sym_if] = ACTIONS(265), - [anon_sym_COLON] = ACTIONS(298), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(590), + [anon_sym_if] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(265), - [anon_sym_in] = ACTIONS(265), + [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(298), - [anon_sym_DASH] = ACTIONS(657), - [anon_sym_PLUS] = ACTIONS(657), - [anon_sym_LBRACK] = ACTIONS(659), - [anon_sym_LBRACE] = ACTIONS(288), - [anon_sym_RBRACE] = ACTIONS(298), - [anon_sym_STAR_STAR] = ACTIONS(298), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(301), + [anon_sym_PLUS] = ACTIONS(301), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(634), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(298), - [anon_sym_not] = ACTIONS(265), - [anon_sym_and] = ACTIONS(265), - [anon_sym_or] = ACTIONS(265), - [anon_sym_SLASH] = ACTIONS(265), - [anon_sym_PERCENT] = ACTIONS(298), - [anon_sym_SLASH_SLASH] = ACTIONS(298), - [anon_sym_AMP] = ACTIONS(298), - [anon_sym_CARET] = ACTIONS(298), - [anon_sym_LT_LT] = ACTIONS(298), - [anon_sym_TILDE] = ACTIONS(657), - [anon_sym_LT] = ACTIONS(265), - [anon_sym_LT_EQ] = ACTIONS(298), - [anon_sym_EQ_EQ] = ACTIONS(298), - [anon_sym_BANG_EQ] = ACTIONS(298), - [anon_sym_GT_EQ] = ACTIONS(298), - [anon_sym_GT] = ACTIONS(265), - [anon_sym_LT_GT] = ACTIONS(298), - [anon_sym_is] = ACTIONS(265), - [sym_ellipsis] = ACTIONS(304), - [sym_integer] = ACTIONS(306), - [sym_float] = ACTIONS(304), - [anon_sym_await] = ACTIONS(661), - [sym_true] = ACTIONS(306), - [sym_false] = ACTIONS(306), - [sym_none] = ACTIONS(306), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(310), - [sym__template_string_start] = ACTIONS(312), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, - [STATE(153)] = { - [sym_named_expression] = STATE(1158), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_expression_list] = STATE(1535), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1213), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1535), - [sym_augmented_assignment] = STATE(1535), - [sym_pattern_list] = STATE(1024), - [sym__right_hand_side] = STATE(1535), - [sym_yield] = STATE(1535), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [STATE(154)] = { + [sym_named_expression] = STATE(1126), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_expression_list] = STATE(1586), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1181), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1586), + [sym_augmented_assignment] = STATE(1586), + [sym_pattern_list] = STATE(1030), + [sym__right_hand_side] = STATE(1586), + [sym_yield] = STATE(1586), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(322), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_exec] = ACTIONS(322), - [anon_sym_type] = ACTIONS(322), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(319), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(319), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_exec] = ACTIONS(319), + [anon_sym_type] = ACTIONS(319), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(154)] = { - [sym_named_expression] = STATE(1158), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_expression_list] = STATE(1518), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1213), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1518), - [sym_augmented_assignment] = STATE(1518), - [sym_pattern_list] = STATE(1024), - [sym__right_hand_side] = STATE(1518), - [sym_yield] = STATE(1518), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [STATE(155)] = { + [sym_named_expression] = STATE(1126), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_expression_list] = STATE(1608), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1181), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1608), + [sym_augmented_assignment] = STATE(1608), + [sym_pattern_list] = STATE(1030), + [sym__right_hand_side] = STATE(1608), + [sym_yield] = STATE(1608), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(322), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_exec] = ACTIONS(322), - [anon_sym_type] = ACTIONS(322), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(319), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(319), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_exec] = ACTIONS(319), + [anon_sym_type] = ACTIONS(319), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(155)] = { - [sym_named_expression] = STATE(1158), - [sym_list_splat] = STATE(1549), - [sym_dictionary_splat] = STATE(1549), - [sym_expression_list] = STATE(1530), - [sym_pattern] = STATE(1013), - [sym_tuple_pattern] = STATE(999), - [sym_list_pattern] = STATE(999), - [sym_list_splat_pattern] = STATE(999), - [sym_expression] = STATE(1213), - [sym_primary_expression] = STATE(779), - [sym_not_operator] = STATE(1158), - [sym_boolean_operator] = STATE(1158), - [sym_binary_operator] = STATE(908), - [sym_unary_operator] = STATE(908), - [sym_comparison_operator] = STATE(1158), - [sym_lambda] = STATE(1158), - [sym_assignment] = STATE(1530), - [sym_augmented_assignment] = STATE(1530), - [sym_pattern_list] = STATE(1024), - [sym__right_hand_side] = STATE(1530), - [sym_yield] = STATE(1530), - [sym_attribute] = STATE(494), - [sym_subscript] = STATE(494), - [sym_call] = STATE(908), - [sym_list] = STATE(908), - [sym_set] = STATE(908), - [sym_tuple] = STATE(908), - [sym_dictionary] = STATE(908), - [sym_list_comprehension] = STATE(908), - [sym_dictionary_comprehension] = STATE(908), - [sym_set_comprehension] = STATE(908), - [sym_generator_expression] = STATE(908), - [sym_parenthesized_expression] = STATE(908), - [sym_conditional_expression] = STATE(1158), - [sym_concatenated_string] = STATE(908), - [sym_string] = STATE(782), - [sym_concatenated_template_string] = STATE(908), - [sym_template_string] = STATE(763), - [sym_await] = STATE(908), + [STATE(156)] = { + [sym_named_expression] = STATE(1126), + [sym_list_splat] = STATE(1590), + [sym_dictionary_splat] = STATE(1590), + [sym_expression_list] = STATE(1610), + [sym_pattern] = STATE(1020), + [sym_tuple_pattern] = STATE(1005), + [sym_list_pattern] = STATE(1005), + [sym_list_splat_pattern] = STATE(1005), + [sym_expression] = STATE(1181), + [sym_primary_expression] = STATE(773), + [sym_not_operator] = STATE(1126), + [sym_boolean_operator] = STATE(1126), + [sym_binary_operator] = STATE(950), + [sym_unary_operator] = STATE(950), + [sym_comparison_operator] = STATE(1126), + [sym_lambda] = STATE(1126), + [sym_assignment] = STATE(1610), + [sym_augmented_assignment] = STATE(1610), + [sym_pattern_list] = STATE(1030), + [sym__right_hand_side] = STATE(1610), + [sym_yield] = STATE(1610), + [sym_attribute] = STATE(614), + [sym_subscript] = STATE(614), + [sym_call] = STATE(950), + [sym_list] = STATE(950), + [sym_set] = STATE(950), + [sym_tuple] = STATE(950), + [sym_dictionary] = STATE(950), + [sym_list_comprehension] = STATE(950), + [sym_dictionary_comprehension] = STATE(950), + [sym_set_comprehension] = STATE(950), + [sym_generator_expression] = STATE(950), + [sym_parenthesized_expression] = STATE(950), + [sym_conditional_expression] = STATE(1126), + [sym_concatenated_string] = STATE(950), + [sym_string] = STATE(779), + [sym_concatenated_template_string] = STATE(950), + [sym_template_string] = STATE(772), + [sym_await] = STATE(950), [sym_identifier] = ACTIONS(7), - [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_STAR] = ACTIONS(15), - [anon_sym_print] = ACTIONS(322), - [anon_sym_async] = ACTIONS(322), - [anon_sym_match] = ACTIONS(322), - [anon_sym_DASH] = ACTIONS(47), - [anon_sym_PLUS] = ACTIONS(47), - [anon_sym_LBRACK] = ACTIONS(49), - [anon_sym_LBRACE] = ACTIONS(51), - [anon_sym_STAR_STAR] = ACTIONS(53), - [anon_sym_exec] = ACTIONS(322), - [anon_sym_type] = ACTIONS(322), - [anon_sym_not] = ACTIONS(69), - [anon_sym_TILDE] = ACTIONS(47), - [anon_sym_lambda] = ACTIONS(71), - [anon_sym_yield] = ACTIONS(73), - [sym_ellipsis] = ACTIONS(75), - [sym_integer] = ACTIONS(77), - [sym_float] = ACTIONS(75), - [anon_sym_await] = ACTIONS(79), - [sym_true] = ACTIONS(77), - [sym_false] = ACTIONS(77), - [sym_none] = ACTIONS(77), + [anon_sym_lazy] = ACTIONS(319), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(319), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_exec] = ACTIONS(319), + [anon_sym_type] = ACTIONS(319), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(81), - [sym__template_string_start] = ACTIONS(83), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 23, + [0] = 31, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(296), 1, - anon_sym_TILDE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(667), 1, - anon_sym_STAR, - ACTIONS(673), 1, - anon_sym_in, - ACTIONS(675), 1, - anon_sym_LBRACK, - ACTIONS(677), 1, - anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1005), 1, - sym_pattern, - STATE(1012), 1, - sym_primary_expression, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - ACTIONS(589), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(849), 2, - sym_attribute, - sym_subscript, - STATE(999), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(669), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - ACTIONS(671), 15, - anon_sym_COLON, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [110] = 29, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(679), 1, - sym_identifier, - ACTIONS(681), 1, - anon_sym_LPAREN, - ACTIONS(683), 1, + ACTIONS(674), 1, + anon_sym_RPAREN, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(687), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(689), 1, - anon_sym_RBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(697), 1, + ACTIONS(686), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1083), 1, + STATE(1070), 1, sym_expression, - STATE(1356), 1, + STATE(1217), 1, + sym_list_splat, + STATE(1294), 1, + sym_parenthesized_list_splat, + STATE(1355), 1, sym_pattern, - STATE(1628), 1, - sym__patterns, - STATE(1633), 1, + STATE(1461), 1, + sym_yield, + STATE(1721), 1, sym__collection_elements, - ACTIONS(304), 2, + STATE(1742), 1, + sym__patterns, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(915), 2, + STATE(917), 2, sym_attribute, sym_subscript, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(685), 5, + ACTIONS(670), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24314,78 +24557,87 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [232] = 23, + [127] = 31, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(296), 1, - anon_sym_TILDE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(667), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(675), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(686), 1, anon_sym_await, - ACTIONS(701), 1, - anon_sym_in, - STATE(621), 1, + ACTIONS(688), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1005), 1, - sym_pattern, - STATE(1012), 1, + STATE(705), 1, sym_primary_expression, - ACTIONS(304), 2, + STATE(1086), 1, + sym_expression, + STATE(1202), 1, + sym_list_splat, + STATE(1294), 1, + sym_parenthesized_list_splat, + STATE(1355), 1, + sym_pattern, + STATE(1432), 1, + sym_yield, + STATE(1686), 1, + sym__collection_elements, + STATE(1742), 1, + sym__patterns, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(589), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(849), 2, + STATE(917), 2, sym_attribute, sym_subscript, - STATE(999), 3, + ACTIONS(606), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(670), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - ACTIONS(699), 15, - anon_sym_COLON, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - STATE(724), 15, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24401,85 +24653,86 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [342] = 30, + [254] = 30, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(679), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(681), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(683), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(687), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(697), 1, + ACTIONS(686), 1, anon_sym_await, - ACTIONS(703), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(690), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1080), 1, sym_expression, - STATE(1356), 1, + STATE(1204), 1, + sym_list_splat, + STATE(1355), 1, sym_pattern, - STATE(1383), 1, - sym_yield, - STATE(1615), 1, + STATE(1657), 1, sym__collection_elements, - STATE(1643), 1, + STATE(1690), 1, sym__patterns, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(915), 2, + STATE(917), 2, sym_attribute, sym_subscript, - STATE(1257), 2, - sym_list_splat, + STATE(1294), 2, sym_parenthesized_list_splat, - ACTIONS(601), 3, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(685), 5, + ACTIONS(670), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24495,84 +24748,86 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [466] = 29, + [379] = 30, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(679), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(681), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(683), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(687), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(697), 1, + ACTIONS(686), 1, anon_sym_await, - ACTIONS(705), 1, + ACTIONS(692), 1, anon_sym_RBRACK, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1081), 1, + STATE(1095), 1, sym_expression, - STATE(1356), 1, + STATE(1218), 1, + sym_list_splat, + STATE(1355), 1, sym_pattern, - STATE(1628), 1, + STATE(1690), 1, sym__patterns, - STATE(1656), 1, + STATE(1692), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(915), 2, + STATE(917), 2, sym_attribute, sym_subscript, - ACTIONS(601), 3, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(685), 5, + ACTIONS(670), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24588,86 +24843,79 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [588] = 31, + [504] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(301), 1, + anon_sym_TILDE, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(679), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(681), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(683), 1, + ACTIONS(700), 1, anon_sym_STAR, - ACTIONS(687), 1, + ACTIONS(704), 1, + anon_sym_in, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(697), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(707), 1, - anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1066), 1, - sym_expression, - STATE(1356), 1, + STATE(1002), 1, sym_pattern, - STATE(1383), 1, - sym_yield, - STATE(1440), 1, - sym_parenthesized_list_splat, - STATE(1474), 1, - sym_list_splat, - STATE(1615), 1, - sym__collection_elements, - STATE(1643), 1, - sym__patterns, - ACTIONS(304), 2, + STATE(1017), 1, + sym_primary_expression, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(915), 2, - sym_attribute, - sym_subscript, - ACTIONS(601), 3, + ACTIONS(594), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - STATE(999), 3, + STATE(842), 2, + sym_attribute, + sym_subscript, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(685), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 15, + ACTIONS(702), 15, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24683,85 +24931,79 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [714] = 30, + [615] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(301), 1, + anon_sym_TILDE, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(679), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(681), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(683), 1, + ACTIONS(700), 1, anon_sym_STAR, - ACTIONS(687), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(697), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(709), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(712), 1, + anon_sym_in, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1084), 1, - sym_expression, - STATE(1356), 1, + STATE(1002), 1, sym_pattern, - STATE(1489), 1, - sym_yield, - STATE(1626), 1, - sym__collection_elements, - STATE(1643), 1, - sym__patterns, - ACTIONS(304), 2, + STATE(1017), 1, + sym_primary_expression, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(915), 2, - sym_attribute, - sym_subscript, - STATE(1257), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(601), 3, + ACTIONS(594), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - STATE(999), 3, + STATE(842), 2, + sym_attribute, + sym_subscript, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(685), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 15, + ACTIONS(710), 15, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24777,84 +25019,86 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [838] = 29, + [726] = 30, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(679), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(681), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(683), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(687), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(697), 1, + ACTIONS(686), 1, anon_sym_await, - ACTIONS(711), 1, + ACTIONS(714), 1, anon_sym_RBRACK, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1081), 1, + STATE(1080), 1, sym_expression, - STATE(1356), 1, + STATE(1204), 1, + sym_list_splat, + STATE(1355), 1, sym_pattern, - STATE(1628), 1, - sym__patterns, - STATE(1656), 1, + STATE(1657), 1, sym__collection_elements, - ACTIONS(304), 2, + STATE(1690), 1, + sym__patterns, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(915), 2, + STATE(917), 2, sym_attribute, sym_subscript, - ACTIONS(601), 3, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(685), 5, + ACTIONS(670), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24870,85 +25114,89 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [960] = 29, + [851] = 31, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(659), 1, - anon_sym_LBRACK, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(713), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(715), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(717), 1, - anon_sym_COMMA, - ACTIONS(719), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(723), 1, - anon_sym_RBRACE, - ACTIONS(725), 1, + ACTIONS(678), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(686), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(716), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(705), 1, sym_primary_expression, - STATE(1046), 1, + STATE(1086), 1, sym_expression, - STATE(1212), 1, - sym_pair, - STATE(1490), 1, - sym_dictionary_splat, - STATE(1705), 1, + STATE(1187), 1, + sym_list_splat, + STATE(1355), 1, + sym_pattern, + STATE(1432), 1, + sym_yield, + STATE(1455), 1, + sym_parenthesized_list_splat, + STATE(1686), 1, sym__collection_elements, - ACTIONS(304), 2, + STATE(1742), 1, + sym__patterns, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + STATE(917), 2, + sym_attribute, + sym_subscript, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + STATE(1005), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(670), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -24962,81 +25210,82 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1081] = 29, + [978] = 29, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(715), 1, + ACTIONS(722), 1, anon_sym_LPAREN, - ACTIONS(719), 1, + ACTIONS(724), 1, + anon_sym_COMMA, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(725), 1, + ACTIONS(728), 1, + anon_sym_RBRACE, + ACTIONS(730), 1, + anon_sym_STAR_STAR, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - ACTIONS(731), 1, - anon_sym_COMMA, - ACTIONS(733), 1, - anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1061), 1, + STATE(1047), 1, sym_expression, - STATE(1190), 1, - sym_pair, - STATE(1403), 1, - sym_dictionary_splat, - STATE(1687), 1, + STATE(1203), 1, + sym_list_splat, + STATE(1727), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + STATE(1207), 2, + sym_dictionary_splat, + sym_pair, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25054,81 +25303,82 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1202] = 29, + [1100] = 29, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(715), 1, + ACTIONS(722), 1, anon_sym_LPAREN, - ACTIONS(719), 1, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(725), 1, + ACTIONS(730), 1, + anon_sym_STAR_STAR, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - ACTIONS(735), 1, + ACTIONS(738), 1, anon_sym_COMMA, - ACTIONS(737), 1, + ACTIONS(740), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1060), 1, + STATE(1063), 1, sym_expression, - STATE(1170), 1, - sym_pair, - STATE(1410), 1, - sym_dictionary_splat, - STATE(1600), 1, + STATE(1206), 1, + sym_list_splat, + STATE(1624), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + STATE(1236), 2, + sym_dictionary_splat, + sym_pair, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25146,81 +25396,82 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1323] = 29, + [1222] = 29, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(715), 1, + ACTIONS(722), 1, anon_sym_LPAREN, - ACTIONS(719), 1, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(725), 1, + ACTIONS(730), 1, + anon_sym_STAR_STAR, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - ACTIONS(739), 1, + ACTIONS(742), 1, anon_sym_COMMA, - ACTIONS(741), 1, + ACTIONS(744), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1034), 1, + STATE(1041), 1, sym_expression, - STATE(1198), 1, - sym_pair, - STATE(1425), 1, - sym_dictionary_splat, - STATE(1602), 1, + STATE(1232), 1, + sym_list_splat, + STATE(1666), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + STATE(1194), 2, + sym_dictionary_splat, + sym_pair, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25238,77 +25489,82 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1444] = 26, + [1344] = 29, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(718), 1, + sym_identifier, + ACTIONS(722), 1, + anon_sym_LPAREN, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(743), 1, - anon_sym_from, - ACTIONS(747), 1, + ACTIONS(730), 1, + anon_sym_STAR_STAR, + ACTIONS(732), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(734), 1, + anon_sym_lambda, + ACTIONS(736), 1, + anon_sym_await, + ACTIONS(746), 1, + anon_sym_COMMA, + ACTIONS(748), 1, + anon_sym_RBRACE, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(775), 1, sym_primary_expression, - STATE(1148), 1, + STATE(1067), 1, sym_expression, - STATE(1196), 1, - sym_expression_list, - ACTIONS(304), 2, + STATE(1228), 1, + sym_list_splat, + STATE(1688), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1510), 2, - sym_list_splat, + STATE(1184), 2, sym_dictionary_splat, - ACTIONS(296), 3, + sym_pair, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(745), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(276), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25326,77 +25582,78 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1558] = 26, + [1466] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(609), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(749), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(751), 1, + ACTIONS(754), 1, anon_sym_from, - ACTIONS(755), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(757), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(766), 1, + STATE(780), 1, sym_primary_expression, - STATE(767), 1, + STATE(781), 1, sym_string, - STATE(768), 1, + STATE(782), 1, sym_template_string, - STATE(1093), 1, + STATE(1107), 1, sym_expression, - STATE(1196), 1, + STATE(1237), 1, sym_expression_list, - ACTIONS(621), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1588), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(615), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(745), 4, + ACTIONS(758), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - ACTIONS(753), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25414,74 +25671,78 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1672] = 24, + [1581] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(766), 1, + anon_sym_from, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1117), 1, + STATE(1175), 1, sym_expression, - ACTIONS(304), 2, + STATE(1237), 1, + sym_expression_list, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1267), 2, + STATE(1573), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(758), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - ACTIONS(761), 5, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25499,74 +25760,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1781] = 24, + [1696] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1117), 1, + STATE(1144), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1267), 2, + STATE(1291), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - ACTIONS(763), 5, + ACTIONS(770), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1031), 6, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25584,74 +25846,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1890] = 24, + [1806] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1117), 1, + STATE(1144), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1267), 2, + STATE(1291), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - ACTIONS(763), 5, + ACTIONS(770), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1031), 6, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25669,74 +25932,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [1999] = 25, + [1916] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(719), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - ACTIONS(765), 1, - anon_sym_yield, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1095), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1144), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1291), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1265), 3, - sym_expression_list, - sym_yield, - sym__f_expression, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(772), 5, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25754,75 +26018,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2109] = 26, + [2026] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(774), 1, anon_sym_STAR, - ACTIONS(767), 1, - anon_sym_from, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + ACTIONS(776), 1, + anon_sym_STAR_STAR, + STATE(780), 1, sym_primary_expression, - STATE(782), 1, + STATE(781), 1, sym_string, - STATE(1202), 1, + STATE(782), 1, + sym_template_string, + STATE(1120), 1, sym_expression, - STATE(1537), 1, - sym_expression_list, - ACTIONS(75), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(745), 2, - sym__newline, - anon_sym_SEMI, - STATE(1549), 2, + STATE(1301), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(772), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25840,73 +26103,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2221] = 24, + [2135] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1174), 1, + STATE(1179), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(771), 3, + ACTIONS(780), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1315), 3, + STATE(1354), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25924,75 +26188,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2329] = 26, + [2244] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(775), 1, - sym_identifier, - ACTIONS(777), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(779), 1, - anon_sym_RPAREN, - ACTIONS(781), 1, - anon_sym_COMMA, - ACTIONS(785), 1, - anon_sym_await, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1076), 1, + STATE(1179), 1, sym_expression, - STATE(1388), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1387), 3, + ACTIONS(780), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1354), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(783), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26010,75 +26273,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2441] = 26, + [2353] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, - sym_identifier, - ACTIONS(789), 1, - anon_sym_RPAREN, - ACTIONS(791), 1, - anon_sym_COMMA, - ACTIONS(795), 1, - anon_sym_await, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1225), 1, + STATE(1179), 1, sym_expression, - STATE(1398), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1397), 3, + ACTIONS(780), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1354), 3, sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26096,157 +26358,77 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2553] = 24, + [2462] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(757), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - ACTIONS(797), 1, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(799), 1, - anon_sym_STAR_STAR, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, - sym_string, - STATE(768), 1, - sym_template_string, - STATE(1164), 1, - sym_expression, - ACTIONS(621), 2, - sym_ellipsis, - sym_float, - STATE(1273), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(615), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(607), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(761), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - ACTIONS(753), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1129), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(924), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [2661] = 24, - ACTIONS(3), 1, - sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, - anon_sym_LBRACE, - ACTIONS(625), 1, - sym__string_start, - ACTIONS(627), 1, - sym__template_string_start, - ACTIONS(749), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(790), 1, + anon_sym_RPAREN, + ACTIONS(792), 1, + anon_sym_COMMA, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(797), 1, - anon_sym_STAR, - ACTIONS(799), 1, - anon_sym_STAR_STAR, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1164), 1, + STATE(705), 1, + sym_primary_expression, + STATE(1087), 1, sym_expression, - ACTIONS(621), 2, + STATE(1212), 1, + sym_list_splat, + STATE(1490), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1273), 2, - sym_list_splat, + STATE(1486), 2, sym_dictionary_splat, - ACTIONS(615), 3, + sym_keyword_argument, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(763), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - ACTIONS(753), 5, + ACTIONS(786), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26264,73 +26446,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2769] = 24, + [2577] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(749), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(797), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(799), 1, - anon_sym_STAR_STAR, - STATE(766), 1, + ACTIONS(796), 1, + anon_sym_from, + STATE(772), 1, + sym_template_string, + STATE(773), 1, sym_primary_expression, - STATE(767), 1, + STATE(779), 1, sym_string, - STATE(768), 1, - sym_template_string, - STATE(1164), 1, + STATE(1210), 1, sym_expression, - ACTIONS(621), 2, + STATE(1569), 1, + sym_expression_list, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1273), 2, + ACTIONS(758), 2, + sym__newline, + anon_sym_SEMI, + STATE(1590), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(615), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(763), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - ACTIONS(753), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26348,74 +26533,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2877] = 25, + [2690] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, - anon_sym_LBRACE, - ACTIONS(625), 1, - sym__string_start, - ACTIONS(627), 1, - sym__template_string_start, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(749), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(765), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(684), 1, anon_sym_yield, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1095), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1179), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1287), 3, - sym_expression_list, + ACTIONS(798), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1354), 3, + sym_list_splat, + sym_parenthesized_list_splat, sym_yield, - sym__f_expression, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26433,162 +26618,77 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2987] = 26, + [2799] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(719), 1, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(775), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(785), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(789), 1, + ACTIONS(800), 1, anon_sym_RPAREN, - ACTIONS(791), 1, + ACTIONS(802), 1, anon_sym_COMMA, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1067), 1, + STATE(1094), 1, sym_expression, - STATE(1398), 1, + STATE(1211), 1, + sym_list_splat, + STATE(1497), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1397), 3, - sym_list_splat, + STATE(1496), 2, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(783), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [3099] = 27, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, - anon_sym_LPAREN, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(803), 1, - anon_sym_RPAREN, - ACTIONS(807), 1, - anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1041), 1, - sym_expression, - STATE(1400), 1, - sym_yield, - STATE(1439), 1, - sym_with_item, - STATE(1675), 1, - sym__collection_elements, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(1257), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(786), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26606,75 +26706,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3213] = 26, + [2914] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(809), 1, + ACTIONS(804), 1, anon_sym_from, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1122), 1, + STATE(1137), 1, sym_expression, - STATE(1475), 1, + STATE(1446), 1, sym_expression_list, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(811), 2, + ACTIONS(806), 2, sym__newline, anon_sym_SEMI, - STATE(1549), 2, + STATE(1590), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26692,73 +26793,78 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3325] = 24, + [3027] = 28, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(773), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(812), 1, + anon_sym_RPAREN, + ACTIONS(814), 1, anon_sym_STAR, - STATE(621), 1, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1174), 1, + STATE(1048), 1, sym_expression, - ACTIONS(304), 2, + STATE(1226), 1, + sym_list_splat, + STATE(1294), 1, + sym_parenthesized_list_splat, + STATE(1447), 1, + sym_yield, + STATE(1484), 1, + sym_with_item, + STATE(1654), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(813), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1315), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26776,73 +26882,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3433] = 24, + [3144] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(769), 1, - anon_sym_LPAREN, - ACTIONS(773), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(756), 1, anon_sym_STAR, - STATE(621), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + ACTIONS(818), 1, + anon_sym_yield, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1174), 1, + STATE(1103), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1588), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(813), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1315), 3, - sym_list_splat, - sym_parenthesized_list_splat, + STATE(1296), 3, + sym_expression_list, sym_yield, - ACTIONS(306), 4, + sym__f_expression, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26860,75 +26968,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3541] = 26, + [3255] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(775), 1, - sym_identifier, - ACTIONS(777), 1, - anon_sym_LPAREN, - ACTIONS(785), 1, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(815), 1, - anon_sym_RPAREN, - ACTIONS(817), 1, - anon_sym_COMMA, - STATE(621), 1, + ACTIONS(774), 1, + anon_sym_STAR, + ACTIONS(776), 1, + anon_sym_STAR_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1075), 1, + STATE(1120), 1, sym_expression, - STATE(1412), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + STATE(1301), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1411), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(783), 5, + ACTIONS(770), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26946,75 +27053,77 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3653] = 26, + [3364] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(719), 1, + ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(775), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(785), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(819), 1, + ACTIONS(820), 1, anon_sym_RPAREN, - ACTIONS(821), 1, + ACTIONS(822), 1, anon_sym_COMMA, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1080), 1, + STATE(1093), 1, sym_expression, - STATE(1430), 1, + STATE(1186), 1, + sym_list_splat, + STATE(1453), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + STATE(1452), 2, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1429), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(783), 5, + ACTIONS(786), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27032,73 +27141,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3765] = 25, + [3479] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(769), 1, - anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(823), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(774), 1, + anon_sym_STAR, + ACTIONS(776), 1, + anon_sym_STAR_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1261), 1, + STATE(1120), 1, sym_expression, - STATE(1577), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1301), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(770), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27116,71 +27226,77 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3874] = 23, + [3588] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(726), 1, + anon_sym_STAR, + ACTIONS(784), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(829), 1, - anon_sym_lambda, - STATE(621), 1, + ACTIONS(824), 1, + anon_sym_RPAREN, + ACTIONS(826), 1, + anon_sym_COMMA, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1075), 1, sym_expression, - ACTIONS(304), 2, + STATE(1196), 1, + sym_list_splat, + STATE(1469), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1211), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + STATE(1482), 2, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(825), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(827), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 4, + ACTIONS(786), 6, + anon_sym_lazy, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27198,73 +27314,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3979] = 25, + [3703] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - ACTIONS(831), 1, - anon_sym_from, - ACTIONS(833), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(835), 1, - anon_sym_STAR_STAR, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + ACTIONS(818), 1, + anon_sym_yield, + STATE(780), 1, sym_primary_expression, - STATE(782), 1, + STATE(781), 1, sym_string, - STATE(1199), 1, + STATE(782), 1, + sym_template_string, + STATE(1103), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(761), 2, - sym__newline, - anon_sym_SEMI, - STATE(1358), 2, + STATE(1588), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + STATE(1289), 3, + sym_expression_list, + sym_yield, + sym__f_expression, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27282,71 +27400,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4088] = 23, + [3814] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(800), 1, + anon_sym_RPAREN, + ACTIONS(802), 1, + anon_sym_COMMA, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(829), 1, - anon_sym_lambda, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1258), 1, sym_expression, - ACTIONS(304), 2, + STATE(1497), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1211), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(837), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(839), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(306), 4, + STATE(1468), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 4, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27364,73 +27487,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4193] = 25, + [3927] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(833), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(835), 1, - anon_sym_STAR_STAR, - ACTIONS(841), 1, - anon_sym_from, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(828), 1, + sym_identifier, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(834), 1, + anon_sym_RPAREN, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1199), 1, + STATE(1321), 1, sym_expression, - ACTIONS(75), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(763), 2, - sym__newline, - anon_sym_SEMI, - STATE(1358), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27448,74 +27572,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4302] = 26, + [4037] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(803), 1, - anon_sym_RPAREN, - ACTIONS(807), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(836), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1086), 1, sym_expression, - STATE(1383), 1, + STATE(1187), 1, + sym_list_splat, + STATE(1432), 1, sym_yield, - STATE(1615), 1, + STATE(1455), 1, + sym_parenthesized_list_splat, + STATE(1686), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1257), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27533,73 +27659,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4413] = 25, + [4151] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(843), 1, + ACTIONS(838), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27617,73 +27744,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4522] = 25, + [4261] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(845), 1, + ACTIONS(840), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27701,73 +27829,159 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4631] = 25, + [4371] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(828), 1, + sym_identifier, + ACTIONS(832), 1, + anon_sym_await, + ACTIONS(842), 1, + anon_sym_RPAREN, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(704), 1, + sym_primary_expression, + STATE(1321), 1, + sym_expression, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(830), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [4481] = 25, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(847), 1, - anon_sym_RBRACK, - STATE(621), 1, + ACTIONS(844), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1081), 1, + STATE(1321), 1, sym_expression, - STATE(1656), 1, - sym__collection_elements, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, + STATE(1539), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27785,73 +27999,159 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4740] = 25, + [4591] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(846), 1, + anon_sym_from, + ACTIONS(848), 1, + anon_sym_STAR, + ACTIONS(850), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + STATE(772), 1, + sym_template_string, + STATE(773), 1, + sym_primary_expression, + STATE(779), 1, + sym_string, + STATE(1219), 1, + sym_expression, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(772), 2, + sym__newline, + anon_sym_SEMI, + STATE(1393), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(363), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1126), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(950), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [4701] = 25, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(849), 1, + ACTIONS(852), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27869,75 +28169,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4849] = 27, + [4811] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(851), 1, + ACTIONS(854), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1321), 1, sym_expression, - STATE(1383), 1, - sym_yield, - STATE(1440), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - STATE(1474), 1, - sym_list_splat, - STATE(1615), 1, - sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27955,73 +28254,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4962] = 25, + [4921] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(853), 1, + ACTIONS(856), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28039,73 +28339,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5071] = 25, + [5031] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(855), 1, + ACTIONS(858), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28123,73 +28424,242 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5180] = 25, + [5141] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + ACTIONS(864), 1, + anon_sym_lambda, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(705), 1, + sym_primary_expression, + STATE(1097), 1, + sym_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(1222), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(860), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(862), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(810), 5, + anon_sym_lazy, + anon_sym_print, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [5247] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(848), 1, + anon_sym_STAR, + ACTIONS(850), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(866), 1, + anon_sym_from, + STATE(772), 1, + sym_template_string, + STATE(773), 1, + sym_primary_expression, + STATE(779), 1, + sym_string, + STATE(1219), 1, + sym_expression, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(770), 2, + sym__newline, + anon_sym_SEMI, + STATE(1393), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(363), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1126), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(950), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [5357] = 25, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(857), 1, + ACTIONS(868), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28207,73 +28677,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5289] = 25, + [5467] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(859), 1, + ACTIONS(870), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28291,71 +28762,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5398] = 23, + [5577] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(829), 1, - anon_sym_lambda, - STATE(621), 1, + ACTIONS(872), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1321), 1, sym_expression, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1211), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(861), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(863), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(306), 4, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 4, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28373,71 +28847,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5503] = 23, + [5687] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(829), 1, - anon_sym_lambda, - STATE(621), 1, + ACTIONS(874), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1321), 1, sym_expression, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1211), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(865), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(867), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(306), 4, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 4, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28455,74 +28932,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5608] = 26, + [5797] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(869), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(876), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1084), 1, + STATE(1080), 1, sym_expression, - STATE(1489), 1, - sym_yield, - STATE(1626), 1, + STATE(1204), 1, + sym_list_splat, + STATE(1657), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1257), 2, - sym_list_splat, + STATE(1294), 2, sym_parenthesized_list_splat, - ACTIONS(601), 3, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28540,73 +29018,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5719] = 25, + [5909] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(871), 1, - anon_sym_RBRACK, - STATE(621), 1, + ACTIONS(878), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1083), 1, + STATE(1070), 1, sym_expression, - STATE(1633), 1, + STATE(1217), 1, + sym_list_splat, + STATE(1294), 1, + sym_parenthesized_list_splat, + STATE(1461), 1, + sym_yield, + STATE(1721), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28624,74 +29105,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5828] = 26, + [6023] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(873), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(880), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1073), 1, + STATE(1095), 1, sym_expression, - STATE(1423), 1, - sym_yield, - STATE(1591), 1, + STATE(1218), 1, + sym_list_splat, + STATE(1692), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1257), 2, - sym_list_splat, + STATE(1294), 2, sym_parenthesized_list_splat, - ACTIONS(601), 3, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28709,73 +29191,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5939] = 25, + [6135] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(769), 1, - anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(875), 1, - anon_sym_RPAREN, - STATE(621), 1, - sym_string, - STATE(624), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(848), 1, + anon_sym_STAR, + ACTIONS(850), 1, + anon_sym_STAR_STAR, + ACTIONS(866), 1, + anon_sym_from, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1261), 1, + STATE(779), 1, + sym_string, + STATE(1219), 1, sym_expression, - STATE(1577), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(770), 2, + sym__newline, + anon_sym_SEMI, + STATE(1393), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28793,75 +29276,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6048] = 27, + [6245] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(803), 1, - anon_sym_RPAREN, - ACTIONS(807), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(882), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1080), 1, sym_expression, - STATE(1383), 1, - sym_yield, - STATE(1440), 1, - sym_parenthesized_list_splat, - STATE(1474), 1, + STATE(1204), 1, sym_list_splat, - STATE(1615), 1, + STATE(1657), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28879,75 +29362,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6161] = 27, + [6357] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(695), 1, + ACTIONS(684), 1, anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, - anon_sym_await, - ACTIONS(873), 1, + ACTIONS(812), 1, anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1086), 1, sym_expression, - STATE(1383), 1, + STATE(1187), 1, + sym_list_splat, + STATE(1432), 1, sym_yield, - STATE(1440), 1, + STATE(1455), 1, sym_parenthesized_list_splat, - STATE(1474), 1, - sym_list_splat, - STATE(1615), 1, + STATE(1686), 1, sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28965,73 +29449,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6274] = 25, + [6471] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, - anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(877), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(864), 1, + anon_sym_lambda, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1097), 1, sym_expression, - STATE(1577), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1222), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(884), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(886), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(810), 5, + anon_sym_lazy, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29049,73 +29532,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6383] = 25, + [6577] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(879), 1, + ACTIONS(888), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1086), 1, sym_expression, - STATE(1577), 1, + STATE(1187), 1, + sym_list_splat, + STATE(1432), 1, + sym_yield, + STATE(1455), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + STATE(1686), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29133,73 +29619,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6492] = 25, + [6691] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(881), 1, + ACTIONS(890), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29217,73 +29704,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6601] = 25, + [6801] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(883), 1, + ACTIONS(892), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29301,73 +29789,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6710] = 25, + [6911] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(885), 1, + ACTIONS(894), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29385,158 +29874,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6819] = 25, + [7021] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - STATE(763), 1, - sym_template_string, - STATE(779), 1, - sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1179), 1, - sym_expression, - STATE(1572), 1, - sym_expression_list, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(887), 2, - sym__newline, - anon_sym_SEMI, - STATE(1549), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(316), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1158), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(908), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [6928] = 26, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(873), 1, + ACTIONS(896), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1321), 1, sym_expression, - STATE(1383), 1, - sym_yield, - STATE(1615), 1, - sym__collection_elements, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1257), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29554,157 +29959,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7039] = 25, + [7131] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(889), 1, - anon_sym_RBRACK, - STATE(621), 1, + ACTIONS(898), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1088), 1, + STATE(1321), 1, sym_expression, - STATE(1594), 1, - sym__collection_elements, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(805), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [7148] = 25, - ACTIONS(3), 1, - sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(83), 1, - sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - ACTIONS(833), 1, - anon_sym_STAR, - ACTIONS(835), 1, - anon_sym_STAR_STAR, - ACTIONS(841), 1, - anon_sym_from, - STATE(763), 1, - sym_template_string, - STATE(779), 1, - sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1199), 1, - sym_expression, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(763), 2, - sym__newline, - anon_sym_SEMI, - STATE(1358), 2, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, - ACTIONS(47), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 4, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29722,73 +30044,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7257] = 25, + [7241] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(891), 1, + ACTIONS(900), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29806,73 +30129,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7366] = 25, + [7351] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(893), 1, + ACTIONS(888), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1086), 1, sym_expression, - STATE(1577), 1, + STATE(1202), 1, + sym_list_splat, + STATE(1294), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + STATE(1432), 1, + sym_yield, + STATE(1686), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29890,73 +30216,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7475] = 25, + [7465] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(895), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(902), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1092), 1, sym_expression, - STATE(1577), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + STATE(1230), 1, + sym_list_splat, + STATE(1658), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29974,73 +30302,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7584] = 25, + [7577] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, - anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(897), 1, - anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(864), 1, + anon_sym_lambda, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1097), 1, sym_expression, - STATE(1577), 1, - sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1222), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(904), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(906), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(810), 5, + anon_sym_lazy, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30058,73 +30385,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7693] = 25, + [7683] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(899), 1, + ACTIONS(908), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30142,158 +30470,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7802] = 26, + [7793] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(851), 1, + ACTIONS(910), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1066), 1, + STATE(1321), 1, sym_expression, - STATE(1383), 1, - sym_yield, - STATE(1615), 1, - sym__collection_elements, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(1257), 2, - sym_list_splat, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(601), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(805), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [7913] = 25, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, - anon_sym_LPAREN, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, - anon_sym_await, - ACTIONS(889), 1, - anon_sym_RBRACK, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1081), 1, - sym_expression, - STATE(1656), 1, - sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, + STATE(1539), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30311,73 +30555,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8022] = 25, + [7903] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(901), 1, + ACTIONS(912), 1, anon_sym_RPAREN, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1321), 1, sym_expression, - STATE(1577), 1, + STATE(1540), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, + STATE(1539), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30395,74 +30640,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8131] = 26, + [8013] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(777), 1, - anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(803), 1, - anon_sym_RPAREN, - ACTIONS(807), 1, + ACTIONS(816), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(864), 1, + anon_sym_lambda, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1079), 1, + STATE(1097), 1, sym_expression, - STATE(1400), 1, - sym_yield, - STATE(1675), 1, - sym__collection_elements, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1257), 2, - sym_list_splat, - sym_parenthesized_list_splat, - ACTIONS(601), 3, + STATE(1222), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(914), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(916), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 5, + anon_sym_lazy, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30480,73 +30723,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8242] = 25, + [8119] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(847), 1, - anon_sym_RBRACK, - STATE(621), 1, + ACTIONS(918), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1321), 1, sym_expression, - STATE(1679), 1, - sym__collection_elements, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1257), 3, + STATE(1539), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30564,155 +30808,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8351] = 25, + [8229] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, - anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(773), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(777), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(801), 1, + ACTIONS(828), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(832), 1, anon_sym_await, - ACTIONS(903), 1, - anon_sym_RBRACK, - STATE(621), 1, + ACTIONS(920), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1081), 1, + STATE(1321), 1, sym_expression, - STATE(1656), 1, - sym__collection_elements, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - ACTIONS(601), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1257), 3, - sym_list_splat, + STATE(1540), 1, sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(805), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [8460] = 24, - ACTIONS(3), 1, - sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(905), 1, - anon_sym_COLON, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1246), 1, - sym_expression, - STATE(1693), 1, - sym_index_expression_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1407), 3, + STATE(1539), 3, sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(306), 4, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30730,71 +30893,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8566] = 24, + [8339] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(787), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(795), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(836), 1, + anon_sym_RPAREN, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1261), 1, + STATE(1086), 1, sym_expression, - STATE(1577), 1, + STATE(1202), 1, + sym_list_splat, + STATE(1294), 1, sym_parenthesized_list_splat, - ACTIONS(304), 2, + STATE(1432), 1, + sym_yield, + STATE(1686), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1570), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(793), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30812,71 +30980,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8672] = 24, + [8453] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(814), 1, anon_sym_STAR, - ACTIONS(905), 1, - anon_sym_COLON, - ACTIONS(907), 1, + ACTIONS(816), 1, + anon_sym_await, + ACTIONS(902), 1, anon_sym_RBRACK, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1080), 1, sym_expression, - ACTIONS(304), 2, + STATE(1204), 1, + sym_list_splat, + STATE(1657), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1508), 3, - sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30894,71 +31066,161 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8778] = 24, + [8565] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, + STATE(772), 1, + sym_template_string, + STATE(773), 1, + sym_primary_expression, + STATE(779), 1, + sym_string, + STATE(1235), 1, + sym_expression, + STATE(1591), 1, + sym_expression_list, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(922), 2, + sym__newline, + anon_sym_SEMI, + STATE(1590), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(363), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1126), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(950), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [8675] = 27, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(813), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(812), 1, anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1174), 1, + STATE(1074), 1, sym_expression, - ACTIONS(304), 2, + STATE(1226), 1, + sym_list_splat, + STATE(1294), 1, + sym_parenthesized_list_splat, + STATE(1447), 1, + sym_yield, + STATE(1654), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1315), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30976,71 +31238,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8884] = 24, + [8789] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(814), 1, anon_sym_STAR, - ACTIONS(905), 1, - anon_sym_COLON, - ACTIONS(909), 1, + ACTIONS(816), 1, + anon_sym_await, + ACTIONS(876), 1, anon_sym_RBRACK, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1090), 1, sym_expression, - ACTIONS(304), 2, + STATE(1227), 1, + sym_list_splat, + STATE(1669), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1294), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1508), 3, - sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31058,71 +31324,163 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8990] = 24, + [8901] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(769), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(773), 1, - anon_sym_STAR, - ACTIONS(813), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(812), 1, anon_sym_RPAREN, - STATE(621), 1, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1174), 1, + STATE(1086), 1, sym_expression, - ACTIONS(304), 2, + STATE(1202), 1, + sym_list_splat, + STATE(1294), 1, + sym_parenthesized_list_splat, + STATE(1432), 1, + sym_yield, + STATE(1686), 1, + sym__collection_elements, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1315), 3, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(810), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [9015] = 27, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(814), 1, + anon_sym_STAR, + ACTIONS(816), 1, + anon_sym_await, + ACTIONS(888), 1, + anon_sym_RPAREN, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(705), 1, + sym_primary_expression, + STATE(1084), 1, + sym_expression, + STATE(1229), 1, sym_list_splat, + STATE(1294), 1, sym_parenthesized_list_splat, + STATE(1464), 1, sym_yield, - ACTIONS(306), 4, + STATE(1655), 1, + sym__collection_elements, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(606), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31140,71 +31498,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9096] = 24, + [9129] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(905), 1, + ACTIONS(924), 1, anon_sym_COLON, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, STATE(1246), 1, sym_expression, - STATE(1660), 1, + STATE(1614), 1, sym_index_expression_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1377), 3, + STATE(1454), 3, sym_list_splat, sym__index_expression, sym_slice, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31222,65 +31581,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9202] = 18, + [9236] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(595), 1, - anon_sym_await, - STATE(621), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + ACTIONS(924), 1, + anon_sym_COLON, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(735), 1, + STATE(704), 1, sym_primary_expression, - ACTIONS(304), 2, + STATE(1246), 1, + sym_expression, + STATE(1694), 1, + sym_index_expression_list, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(265), 3, - anon_sym_DOT, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(911), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(306), 5, + STATE(1470), 3, + sym_list_splat, + sym__index_expression, + sym_slice, + ACTIONS(311), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - ACTIONS(298), 9, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - STATE(724), 17, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31298,71 +31664,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9296] = 24, + [9343] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(780), 1, + anon_sym_RPAREN, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(905), 1, - anon_sym_COLON, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1179), 1, sym_expression, - STATE(1669), 1, - sym_index_expression_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1414), 3, + STATE(1354), 3, sym_list_splat, - sym__index_expression, - sym_slice, - ACTIONS(306), 4, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31380,71 +31747,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9402] = 24, + [9450] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(905), 1, + ACTIONS(924), 1, anon_sym_COLON, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, STATE(1246), 1, sym_expression, - STATE(1653), 1, + STATE(1660), 1, sym_index_expression_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1432), 3, + STATE(1501), 3, sym_list_splat, sym__index_expression, sym_slice, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31462,69 +31830,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9508] = 23, + [9557] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(591), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(695), 1, - anon_sym_yield, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(769), 1, - anon_sym_LPAREN, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - STATE(621), 1, + ACTIONS(924), 1, + anon_sym_COLON, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1174), 1, + STATE(1246), 1, sym_expression, - ACTIONS(304), 2, + STATE(1735), 1, + sym_index_expression_list, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1315), 3, + STATE(1518), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(306), 4, + sym__index_expression, + sym_slice, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31542,70 +31913,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9611] = 24, + [9664] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + ACTIONS(924), 1, + anon_sym_COLON, + ACTIONS(926), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1237), 1, + STATE(1246), 1, sym_expression, - STATE(1637), 1, - sym_expression_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1510), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + STATE(1535), 3, + sym_list_splat, + sym__index_expression, + sym_slice, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31623,70 +31996,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9716] = 24, + [9771] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - STATE(763), 1, + ACTIONS(600), 1, + anon_sym_await, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(766), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1180), 1, - sym_expression, - STATE(1579), 1, - sym_expression_list, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1549), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(272), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(928), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(311), 5, sym_integer, + sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(908), 17, + ACTIONS(303), 9, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31704,69 +32073,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9821] = 23, + [9866] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(905), 1, + ACTIONS(924), 1, anon_sym_COLON, - STATE(621), 1, + ACTIONS(930), 1, + anon_sym_RBRACK, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, STATE(1246), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1508), 3, + STATE(1535), 3, sym_list_splat, sym__index_expression, sym_slice, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31784,70 +32156,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9924] = 24, + [9973] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(828), 1, + sym_identifier, + ACTIONS(832), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1240), 1, + STATE(1321), 1, sym_expression, - STATE(1625), 1, - sym_expression_list, - ACTIONS(304), 2, + STATE(1540), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1510), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + STATE(1539), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(830), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31865,70 +32239,71 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10029] = 24, + [10080] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1236), 1, + STATE(779), 1, + sym_string, + STATE(1239), 1, sym_expression, - STATE(1610), 1, + STATE(1554), 1, sym_expression_list, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1510), 2, + STATE(1590), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31946,70 +32321,71 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10134] = 24, + [10186] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1235), 1, + STATE(1265), 1, sym_expression, - STATE(1603), 1, + STATE(1645), 1, sym_expression_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1510), 2, + STATE(1573), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32027,68 +32403,71 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10239] = 23, + [10292] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(913), 1, - anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1279), 1, sym_expression, - ACTIONS(304), 2, + STATE(1687), 1, + sym_expression_list, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1573), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32106,68 +32485,70 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10341] = 23, + [10398] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(833), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(835), 1, - anon_sym_STAR_STAR, - STATE(763), 1, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1199), 1, + STATE(1179), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1358), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + STATE(1354), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32185,68 +32566,71 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10443] = 23, + [10502] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, - anon_sym_LBRACE, - ACTIONS(625), 1, - sym__string_start, - ACTIONS(627), 1, - sym__template_string_start, - ACTIONS(749), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(268), 1, sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(797), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(799), 1, - anon_sym_STAR_STAR, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1164), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1253), 1, sym_expression, - ACTIONS(621), 2, + STATE(1636), 1, + sym_expression_list, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1273), 2, + STATE(1573), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32264,68 +32648,70 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10545] = 23, + [10608] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(915), 1, - anon_sym_RBRACE, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + ACTIONS(924), 1, + anon_sym_COLON, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1246), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, - sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + STATE(1535), 3, + sym_list_splat, + sym__index_expression, + sym_slice, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32343,68 +32729,71 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10647] = 23, + [10712] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(917), 1, - anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1250), 1, sym_expression, - ACTIONS(304), 2, + STATE(1629), 1, + sym_expression_list, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1573), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32422,68 +32811,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10749] = 23, + [10818] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(919), 1, - anon_sym_RBRACE, - STATE(621), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + ACTIONS(774), 1, + anon_sym_STAR, + ACTIONS(776), 1, + anon_sym_STAR_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1331), 1, + STATE(1120), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1301), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32501,68 +32891,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10851] = 23, + [10921] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(921), 1, - anon_sym_RBRACE, - STATE(621), 1, - sym_string, - STATE(624), 1, + ACTIONS(848), 1, + anon_sym_STAR, + ACTIONS(850), 1, + anon_sym_STAR_STAR, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1331), 1, + STATE(779), 1, + sym_string, + STATE(1219), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1393), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32580,68 +32971,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10953] = 23, + [11024] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(923), 1, - anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1144), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1291), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32659,68 +33051,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11055] = 23, + [11127] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(925), 1, + ACTIONS(932), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1567), 2, sym_dictionary_splat, sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32738,68 +33131,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11157] = 23, + [11230] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(927), 1, + ACTIONS(934), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1567), 2, sym_dictionary_splat, sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32817,68 +33211,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11259] = 23, + [11333] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(929), 1, + ACTIONS(936), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1567), 2, sym_dictionary_splat, sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32896,68 +33291,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11361] = 23, + [11436] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(931), 1, + ACTIONS(938), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1567), 2, sym_dictionary_splat, sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32975,68 +33371,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11463] = 23, + [11539] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(933), 1, + ACTIONS(940), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1567), 2, sym_dictionary_splat, sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33054,68 +33451,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11565] = 23, + [11642] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(935), 1, + ACTIONS(942), 1, anon_sym_RBRACE, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1331), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1563), 2, + STATE(1567), 2, sym_dictionary_splat, sym_pair, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33133,68 +33531,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11667] = 23, + [11745] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(719), 1, - anon_sym_STAR, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(944), 1, + anon_sym_RBRACE, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1117), 1, + STATE(1395), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1267), 2, - sym_list_splat, + STATE(1567), 2, sym_dictionary_splat, - ACTIONS(296), 3, + sym_pair, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33212,67 +33611,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11769] = 23, + [11848] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, - anon_sym_STAR, - STATE(621), 1, + ACTIONS(946), 1, + anon_sym_RBRACE, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1395), 1, sym_expression, - STATE(1308), 1, - sym_list_splat, - STATE(1447), 1, - sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1567), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33290,67 +33691,67 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11870] = 23, + [11951] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, - anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1395), 1, sym_expression, - STATE(1308), 1, - sym_list_splat, - STATE(1583), 1, - sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(1567), 2, + sym_dictionary_splat, + sym_pair, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33368,87 +33769,23 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11971] = 9, + [12051] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(943), 1, + ACTIONS(954), 1, anon_sym_except, - ACTIONS(945), 1, + ACTIONS(956), 1, anon_sym_finally, - STATE(470), 1, + STATE(480), 1, sym_else_clause, - STATE(575), 1, - sym_finally_clause, - STATE(330), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(939), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(937), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [12044] = 9, - ACTIONS(3), 1, - sym_comment, - ACTIONS(941), 1, - anon_sym_else, - ACTIONS(945), 1, - anon_sym_finally, - ACTIONS(947), 1, - anon_sym_except, - STATE(470), 1, - sym_else_clause, - STATE(575), 1, + STATE(554), 1, sym_finally_clause, STATE(331), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - ACTIONS(939), 13, + ACTIONS(950), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -33462,7 +33799,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(937), 33, + ACTIONS(948), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -33496,26 +33834,26 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12117] = 9, + [12125] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(951), 1, + ACTIONS(954), 1, anon_sym_except, - ACTIONS(953), 1, + ACTIONS(956), 1, anon_sym_finally, - STATE(472), 1, + STATE(484), 1, sym_else_clause, - STATE(518), 1, + STATE(572), 1, sym_finally_clause, - STATE(328), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(939), 13, + STATE(331), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(960), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -33526,7 +33864,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(937), 33, + ACTIONS(958), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -33560,66 +33899,68 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12190] = 22, + [12199] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(957), 1, - anon_sym_COLON, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1247), 1, + STATE(1231), 1, sym_expression, - ACTIONS(304), 2, + STATE(1333), 1, + sym_type, + STATE(1358), 1, + sym_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(955), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33637,67 +33978,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12289] = 23, + [12301] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(773), 1, + ACTIONS(962), 1, anon_sym_STAR, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1172), 1, + STATE(779), 1, + sym_string, + STATE(1271), 1, sym_expression, - STATE(1308), 1, - sym_list_splat, - STATE(1697), 1, + STATE(1436), 1, sym_type, - ACTIONS(304), 2, + STATE(1529), 1, + sym_list_splat, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33715,67 +34057,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12390] = 23, + [12403] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(773), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(968), 1, anon_sym_STAR, - STATE(621), 1, + ACTIONS(970), 1, + anon_sym_COLON, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1172), 1, + STATE(1177), 1, sym_expression, - STATE(1308), 1, - sym_list_splat, - STATE(1639), 1, - sym_type, - ACTIONS(304), 2, + STATE(1594), 1, + sym_exception_list, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33793,67 +34136,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12491] = 23, + [12505] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(959), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, anon_sym_STAR, - STATE(763), 1, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1250), 1, + STATE(1231), 1, sym_expression, - STATE(1406), 1, - sym_type, - STATE(1463), 1, + STATE(1358), 1, sym_list_splat, - ACTIONS(75), 2, + STATE(1643), 1, + sym_type, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33871,67 +34215,133 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12592] = 23, + [12607] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(978), 1, + anon_sym_else, + ACTIONS(980), 1, + anon_sym_except, + ACTIONS(982), 1, + anon_sym_finally, + STATE(481), 1, + sym_else_clause, + STATE(557), 1, + sym_finally_clause, + STATE(315), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(950), 13, + sym__string_start, + sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(639), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(641), 1, anon_sym_LBRACE, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(963), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(948), 34, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, anon_sym_STAR, - ACTIONS(967), 1, - anon_sym_COLON, - ACTIONS(969), 1, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(971), 1, anon_sym_lambda, - ACTIONS(973), 1, + anon_sym_yield, + sym_integer, + sym_identifier, anon_sym_await, - STATE(794), 1, + sym_true, + sym_false, + sym_none, + [12681] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(704), 1, sym_primary_expression, - STATE(1207), 1, + STATE(1231), 1, sym_expression, - STATE(1552), 1, - sym_exception_list, - ACTIONS(643), 2, + STATE(1358), 1, + sym_list_splat, + STATE(1494), 1, + sym_type, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33949,66 +34359,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12693] = 22, + [12783] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(977), 1, - anon_sym_COLON, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1249), 1, + STATE(1231), 1, sym_expression, - ACTIONS(304), 2, + STATE(1358), 1, + sym_list_splat, + STATE(1715), 1, + sym_type, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(975), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34026,26 +34438,26 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12792] = 9, + [12885] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(951), 1, - anon_sym_except, - ACTIONS(953), 1, + ACTIONS(956), 1, anon_sym_finally, - STATE(468), 1, + ACTIONS(984), 1, + anon_sym_except, + STATE(484), 1, sym_else_clause, - STATE(534), 1, + STATE(572), 1, sym_finally_clause, - STATE(328), 2, + STATE(324), 2, sym_except_clause, aux_sym_try_statement_repeat1, - ACTIONS(979), 13, + ACTIONS(960), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34056,7 +34468,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(981), 33, + ACTIONS(958), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34090,67 +34503,146 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12865] = 23, + [12959] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, - anon_sym_STAR, - STATE(621), 1, + ACTIONS(988), 1, + anon_sym_COLON, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1264), 1, sym_expression, - STATE(1308), 1, - sym_list_splat, - STATE(1617), 1, - sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(986), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [13059] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + ACTIONS(990), 1, + anon_sym_STAR, + ACTIONS(992), 1, + anon_sym_COLON, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, + sym_string, + STATE(791), 1, + sym_template_string, + STATE(1208), 1, + sym_expression, + STATE(1547), 1, + sym_exception_list, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34168,67 +34660,132 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12966] = 23, + [13161] = 9, + ACTIONS(3), 1, + sym_comment, + ACTIONS(978), 1, + anon_sym_else, + ACTIONS(982), 1, + anon_sym_finally, + ACTIONS(994), 1, + anon_sym_except, + STATE(481), 1, + sym_else_clause, + STATE(557), 1, + sym_finally_clause, + STATE(314), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(950), 13, + sym__string_start, + sym__template_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(948), 34, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [13235] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, - anon_sym_STAR, - STATE(621), 1, + ACTIONS(998), 1, + anon_sym_COLON, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1244), 1, sym_expression, - STATE(1308), 1, - sym_list_splat, - STATE(1341), 1, - sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(996), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34246,67 +34803,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13067] = 23, + [13335] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1231), 1, sym_expression, - STATE(1308), 1, + STATE(1358), 1, sym_list_splat, - STATE(1642), 1, + STATE(1630), 1, sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34324,26 +34882,26 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13168] = 9, + [13437] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(978), 1, anon_sym_else, - ACTIONS(943), 1, - anon_sym_except, - ACTIONS(945), 1, + ACTIONS(982), 1, anon_sym_finally, - STATE(479), 1, + ACTIONS(994), 1, + anon_sym_except, + STATE(476), 1, sym_else_clause, - STATE(561), 1, + STATE(537), 1, sym_finally_clause, - STATE(330), 2, + STATE(314), 2, sym_except_clause, aux_sym_try_statement_repeat1, - ACTIONS(979), 13, - sym__dedent, + ACTIONS(960), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34354,7 +34912,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(981), 33, + ACTIONS(958), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34388,23 +34947,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [13241] = 9, + [13511] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(978), 1, anon_sym_else, - ACTIONS(953), 1, - anon_sym_finally, - ACTIONS(983), 1, + ACTIONS(980), 1, anon_sym_except, - STATE(472), 1, + ACTIONS(982), 1, + anon_sym_finally, + STATE(476), 1, sym_else_clause, - STATE(518), 1, + STATE(537), 1, sym_finally_clause, - STATE(329), 2, + STATE(315), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - ACTIONS(939), 13, + ACTIONS(960), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -34418,7 +34977,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(937), 33, + ACTIONS(958), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34452,178 +35012,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [13314] = 23, - ACTIONS(3), 1, - sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, - anon_sym_LBRACE, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, - anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, - anon_sym_await, - ACTIONS(985), 1, - anon_sym_STAR, - ACTIONS(987), 1, - anon_sym_COLON, - STATE(794), 1, - sym_string, - STATE(795), 1, - sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1204), 1, - sym_expression, - STATE(1548), 1, - sym_exception_list, - ACTIONS(643), 2, - sym_ellipsis, - sym_float, - ACTIONS(637), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(629), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(965), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1176), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(953), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [13415] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_STAR_STAR, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1331), 1, - sym_expression, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(1563), 2, - sym_dictionary_splat, - sym_pair, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(276), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [13514] = 9, + [13585] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(945), 1, + ACTIONS(956), 1, anon_sym_finally, - ACTIONS(947), 1, + ACTIONS(984), 1, anon_sym_except, - STATE(479), 1, + STATE(480), 1, sym_else_clause, - STATE(561), 1, + STATE(554), 1, sym_finally_clause, - STATE(331), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(979), 13, + STATE(324), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(950), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -34637,7 +35042,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(981), 33, + ACTIONS(948), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -34671,67 +35077,68 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [13587] = 23, + [13659] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1231), 1, sym_expression, - STATE(1308), 1, + STATE(1358), 1, sym_list_splat, - STATE(1616), 1, + STATE(1747), 1, sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34749,67 +35156,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13688] = 23, + [13761] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1231), 1, sym_expression, - STATE(1308), 1, + STATE(1358), 1, sym_list_splat, - STATE(1618), 1, + STATE(1642), 1, sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34827,67 +35235,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13789] = 23, + [13863] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, + ACTIONS(782), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1172), 1, + STATE(1231), 1, sym_expression, - STATE(1308), 1, + STATE(1358), 1, sym_list_splat, - STATE(1622), 1, + STATE(1644), 1, sym_type, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34905,129 +35314,147 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13890] = 9, + [13965] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, - anon_sym_else, - ACTIONS(953), 1, - anon_sym_finally, - ACTIONS(983), 1, - anon_sym_except, - STATE(468), 1, - sym_else_clause, - STATE(534), 1, - sym_finally_clause, - STATE(329), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(979), 13, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, - ts_builtin_sym_end, + ACTIONS(585), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(596), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(704), 1, + sym_primary_expression, + STATE(1231), 1, + sym_expression, + STATE(1358), 1, + sym_list_splat, + STATE(1648), 1, + sym_type, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(981), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [13963] = 22, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [14067] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, - anon_sym_LBRACE, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(969), 1, - anon_sym_not, - ACTIONS(971), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(989), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, anon_sym_LPAREN, - STATE(794), 1, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(704), 1, sym_primary_expression, - STATE(1200), 1, + STATE(1231), 1, sym_expression, - STATE(1434), 1, - sym_with_item, - STATE(1607), 1, - sym_with_clause, - ACTIONS(643), 2, + STATE(1358), 1, + sym_list_splat, + STATE(1649), 1, + sym_type, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35045,64 +35472,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14061] = 21, + [14169] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + ACTIONS(1000), 1, + anon_sym_RPAREN, + STATE(789), 1, sym_primary_expression, - STATE(782), 1, + STATE(790), 1, sym_string, - STATE(1224), 1, + STATE(791), 1, + sym_template_string, + STATE(1192), 1, sym_expression, - ACTIONS(75), 2, + STATE(1522), 1, + sym_with_item, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(991), 2, - sym__newline, - anon_sym_SEMI, - ACTIONS(47), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35120,64 +35549,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14157] = 21, + [14268] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(1002), 1, anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + STATE(789), 1, sym_primary_expression, - STATE(782), 1, + STATE(790), 1, sym_string, - STATE(1224), 1, + STATE(791), 1, + sym_template_string, + STATE(1192), 1, sym_expression, - ACTIONS(75), 2, + STATE(1478), 1, + sym_with_item, + STATE(1719), 1, + sym_with_clause, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(993), 2, - sym__newline, - anon_sym_SEMI, - ACTIONS(47), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35195,64 +35626,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14253] = 21, + [14367] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1224), 1, + STATE(1278), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(995), 2, + ACTIONS(1004), 2, sym__newline, anon_sym_SEMI, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35270,64 +35702,142 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14349] = 21, + [14464] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(970), 1, + anon_sym_COLON, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, + sym_string, + STATE(791), 1, + sym_template_string, + STATE(1177), 1, + sym_expression, + STATE(1594), 1, + sym_exception_list, + ACTIONS(660), 2, + sym_ellipsis, + sym_float, + ACTIONS(654), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(966), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1198), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(985), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [14563] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(829), 1, + ACTIONS(864), 1, anon_sym_lambda, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1098), 1, + STATE(1104), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1203), 2, + STATE(1178), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35345,64 +35855,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14445] = 21, + [14660] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1276), 1, + STATE(1317), 1, sym_expression, - ACTIONS(304), 2, + STATE(1566), 1, + sym_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(997), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35420,122 +35932,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14541] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1001), 17, - anon_sym_as, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(999), 35, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [14601] = 22, + [14759] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(967), 1, - anon_sym_COLON, - ACTIONS(969), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(976), 1, anon_sym_await, - STATE(794), 1, + ACTIONS(1002), 1, + anon_sym_LPAREN, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1207), 1, + STATE(1192), 1, sym_expression, - STATE(1552), 1, - sym_exception_list, - ACTIONS(643), 2, + STATE(1478), 1, + sym_with_item, + STATE(1716), 1, + sym_with_clause, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35553,64 +36009,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14699] = 21, + [14858] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1266), 1, + STATE(779), 1, + sym_string, + STATE(1278), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(1003), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(296), 3, + ACTIONS(1006), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35628,64 +36085,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14795] = 21, + [14955] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, - anon_sym_await, - ACTIONS(829), 1, - anon_sym_lambda, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1320), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1211), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(1008), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35703,65 +36161,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14891] = 22, + [15052] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(773), 1, - anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1264), 1, + STATE(1303), 1, sym_expression, - STATE(1519), 1, - sym_list_splat, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(1010), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35779,65 +36237,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14989] = 22, + [15149] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(1005), 1, - anon_sym_RPAREN, - STATE(794), 1, + ACTIONS(864), 1, + anon_sym_lambda, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(705), 1, sym_primary_expression, - STATE(1200), 1, + STATE(1097), 1, sym_expression, - STATE(1501), 1, - sym_with_item, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + STATE(1174), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35855,64 +36313,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15087] = 21, + [15246] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1224), 1, + STATE(1278), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(1007), 2, + ACTIONS(1012), 2, sym__newline, anon_sym_SEMI, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35930,64 +36389,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15183] = 21, + [15343] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1268), 1, + STATE(779), 1, + sym_string, + STATE(1278), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(1009), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(296), 3, + ACTIONS(1014), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36005,64 +36465,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15279] = 21, + [15440] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(829), 1, + ACTIONS(864), 1, anon_sym_lambda, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1090), 1, + STATE(1097), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1178), 2, + STATE(1135), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36080,64 +36541,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15375] = 21, + [15537] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, - anon_sym_await, - ACTIONS(829), 1, - anon_sym_lambda, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1318), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1128), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(1016), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36155,65 +36617,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15471] = 22, + [15634] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(639), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(989), 1, - anon_sym_LPAREN, - STATE(794), 1, + ACTIONS(992), 1, + anon_sym_COLON, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1200), 1, + STATE(1208), 1, sym_expression, - STATE(1434), 1, - sym_with_item, - STATE(1589), 1, - sym_with_clause, - ACTIONS(643), 2, + STATE(1547), 1, + sym_exception_list, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36231,65 +36694,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15569] = 22, + [15733] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(639), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(989), 1, + ACTIONS(1002), 1, anon_sym_LPAREN, - STATE(794), 1, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1200), 1, + STATE(1192), 1, sym_expression, - STATE(1434), 1, + STATE(1478), 1, sym_with_item, - STATE(1597), 1, + STATE(1613), 1, sym_with_clause, - ACTIONS(643), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36307,64 +36771,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15667] = 21, + [15832] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + ACTIONS(1002), 1, + anon_sym_LPAREN, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1291), 1, + STATE(1192), 1, sym_expression, - ACTIONS(304), 2, + STATE(1478), 1, + sym_with_item, + STATE(1622), 1, + sym_with_clause, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(1011), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36382,122 +36848,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15763] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1015), 17, - anon_sym_as, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1013), 35, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [15823] = 22, + [15931] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(1017), 1, - anon_sym_RPAREN, - STATE(794), 1, + ACTIONS(864), 1, + anon_sym_lambda, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(705), 1, sym_primary_expression, - STATE(1200), 1, + STATE(1097), 1, sym_expression, - STATE(1501), 1, - sym_with_item, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + STATE(1222), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36515,64 +36924,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15921] = 21, + [16028] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(829), 1, + ACTIONS(864), 1, anon_sym_lambda, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1094), 1, + STATE(1099), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1111), 2, + STATE(1205), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36590,65 +37000,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [16017] = 22, + [16125] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(639), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(989), 1, - anon_sym_LPAREN, - STATE(794), 1, + ACTIONS(1018), 1, + anon_sym_RPAREN, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1200), 1, + STATE(1192), 1, sym_expression, - STATE(1434), 1, + STATE(1522), 1, sym_with_item, - STATE(1670), 1, - sym_with_clause, - ACTIONS(643), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36666,65 +37077,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [16115] = 22, + [16224] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, - anon_sym_await, - ACTIONS(987), 1, - anon_sym_COLON, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(704), 1, sym_primary_expression, - STATE(1204), 1, + STATE(1283), 1, sym_expression, - STATE(1548), 1, - sym_exception_list, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(1020), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36742,20 +37153,10 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [16213] = 8, + [16321] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, - anon_sym_else, - ACTIONS(1023), 1, - anon_sym_elif, - STATE(321), 1, - aux_sym_if_statement_repeat1, - STATE(463), 1, - sym_elif_clause, - STATE(514), 1, - sym_else_clause, - ACTIONS(1019), 13, + ACTIONS(1022), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -36769,7 +37170,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1021), 33, + ACTIONS(1024), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36782,12 +37184,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -36803,13 +37210,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16282] = 3, + [16381] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1027), 13, - sym__dedent, + ACTIONS(1026), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -36820,7 +37227,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1025), 38, + ACTIONS(1028), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -36859,150 +37267,72 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16341] = 3, + [16441] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1031), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, + ACTIONS(1032), 17, + anon_sym_as, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, anon_sym_STAR_STAR, + anon_sym_EQ, anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1029), 38, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 35, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - anon_sym_elif, + anon_sym_COLON, anon_sym_else, anon_sym_async, anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_except, - anon_sym_finally, - anon_sym_with, - anon_sym_match, - anon_sym_case, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [16400] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, + anon_sym_in, anon_sym_LBRACK, - ACTIONS(641), 1, - anon_sym_LBRACE, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, - anon_sym_await, - STATE(794), 1, - sym_string, - STATE(795), 1, - sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1200), 1, - sym_expression, - STATE(1501), 1, - sym_with_item, - ACTIONS(643), 2, - sym_ellipsis, - sym_float, - ACTIONS(637), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(629), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(965), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1176), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(953), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [16495] = 8, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [16501] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, - anon_sym_else, - ACTIONS(1023), 1, - anon_sym_elif, - STATE(354), 1, - aux_sym_if_statement_repeat1, - STATE(463), 1, - sym_elif_clause, - STATE(525), 1, - sym_else_clause, - ACTIONS(1033), 13, + ACTIONS(1038), 1, + anon_sym_except, + STATE(314), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1034), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -37016,7 +37346,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1035), 33, + ACTIONS(1036), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37029,10 +37360,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -37050,10 +37383,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16564] = 3, + [16565] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1037), 13, + ACTIONS(1045), 1, + anon_sym_except, + STATE(315), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1041), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -37067,7 +37405,62 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1039), 38, + ACTIONS(1043), 36, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [16629] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1026), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1028), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37106,13 +37499,70 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16623] = 3, + [16689] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1050), 17, + anon_sym_as, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_EQ, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1048), 35, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [16749] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1027), 13, + ACTIONS(1054), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37123,7 +37573,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1025), 38, + ACTIONS(1052), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37162,23 +37613,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16682] = 8, + [16809] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(978), 1, anon_sym_else, - ACTIONS(1041), 1, + ACTIONS(1060), 1, anon_sym_elif, - STATE(326), 1, + STATE(392), 1, aux_sym_if_statement_repeat1, STATE(473), 1, sym_elif_clause, - STATE(558), 1, + STATE(566), 1, sym_else_clause, - ACTIONS(1019), 13, - sym__dedent, + ACTIONS(1056), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37189,7 +37640,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1021), 33, + ACTIONS(1058), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37223,10 +37675,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16751] = 3, + [16879] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1045), 13, + ACTIONS(952), 1, + anon_sym_else, + ACTIONS(1066), 1, + anon_sym_elif, + STATE(321), 1, + aux_sym_if_statement_repeat1, + STATE(479), 1, + sym_elif_clause, + STATE(549), 1, + sym_else_clause, + ACTIONS(1064), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -37240,7 +37702,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1043), 38, + ACTIONS(1062), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37253,17 +37716,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -37279,23 +37737,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16810] = 8, + [16949] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(1023), 1, + ACTIONS(1066), 1, anon_sym_elif, - STATE(354), 1, + STATE(350), 1, aux_sym_if_statement_repeat1, - STATE(463), 1, + STATE(479), 1, sym_elif_clause, - STATE(596), 1, + STATE(563), 1, sym_else_clause, - ACTIONS(1047), 13, + ACTIONS(1070), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37306,7 +37764,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1049), 33, + ACTIONS(1068), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37340,23 +37799,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16879] = 8, + [17019] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(1023), 1, + ACTIONS(1066), 1, anon_sym_elif, - STATE(316), 1, + STATE(337), 1, aux_sym_if_statement_repeat1, - STATE(463), 1, + STATE(479), 1, sym_elif_clause, - STATE(597), 1, + STATE(565), 1, sym_else_clause, - ACTIONS(1051), 13, + ACTIONS(1074), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37367,7 +37826,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1053), 33, + ACTIONS(1072), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37401,63 +37861,64 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16948] = 21, + [17089] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(976), 1, anon_sym_await, - STATE(794), 1, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1186), 1, + STATE(1193), 1, sym_expression, - STATE(1565), 1, + STATE(1564), 1, sym_exception_list, - ACTIONS(643), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37475,76 +37936,18 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [17043] = 10, - ACTIONS(3), 1, - sym_comment, - ACTIONS(270), 1, - anon_sym_COMMA, - ACTIONS(278), 1, - anon_sym_COLON_EQ, - ACTIONS(1055), 1, - anon_sym_for, - ACTIONS(1057), 1, - anon_sym_with, - ACTIONS(1059), 1, - anon_sym_def, - ACTIONS(280), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(302), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(265), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(298), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [17116] = 3, + [17185] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1045), 13, + ACTIONS(1076), 1, + anon_sym_except, + STATE(324), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1034), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37555,7 +37958,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1043), 38, + ACTIONS(1036), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37568,17 +37972,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -37594,20 +37995,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17175] = 8, + [17249] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, - anon_sym_else, - ACTIONS(1041), 1, - anon_sym_elif, - STATE(399), 1, - aux_sym_if_statement_repeat1, - STATE(473), 1, - sym_elif_clause, - STATE(568), 1, - sym_else_clause, - ACTIONS(1047), 13, + ACTIONS(1022), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -37621,7 +38012,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1049), 33, + ACTIONS(1024), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37634,12 +38026,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -37655,23 +38052,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17244] = 8, + [17309] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, - anon_sym_else, - ACTIONS(1041), 1, - anon_sym_elif, - STATE(333), 1, - aux_sym_if_statement_repeat1, - STATE(473), 1, - sym_elif_clause, - STATE(569), 1, - sym_else_clause, - ACTIONS(1051), 13, - sym__dedent, + ACTIONS(1079), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37682,7 +38069,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1053), 33, + ACTIONS(1081), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37695,12 +38083,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -37716,15 +38109,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17313] = 5, + [17369] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1065), 1, - anon_sym_except, - STATE(328), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(1061), 13, + ACTIONS(978), 1, + anon_sym_else, + ACTIONS(1060), 1, + anon_sym_elif, + STATE(392), 1, + aux_sym_if_statement_repeat1, + STATE(473), 1, + sym_elif_clause, + STATE(520), 1, + sym_else_clause, + ACTIONS(1070), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -37738,7 +38136,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1063), 35, + ACTIONS(1068), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37751,12 +38150,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -37774,15 +38171,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17376] = 5, + [17439] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1072), 1, - anon_sym_except, - STATE(329), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(1068), 13, + ACTIONS(1054), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -37796,7 +38188,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1070), 35, + ACTIONS(1052), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37809,14 +38202,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -37832,18 +38228,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17439] = 5, + [17499] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1075), 1, - anon_sym_except, - STATE(330), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(1061), 13, - sym__dedent, + ACTIONS(978), 1, + anon_sym_else, + ACTIONS(1060), 1, + anon_sym_elif, + STATE(319), 1, + aux_sym_if_statement_repeat1, + STATE(473), 1, + sym_elif_clause, + STATE(521), 1, + sym_else_clause, + ACTIONS(1074), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37854,7 +38255,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1063), 35, + ACTIONS(1072), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37867,12 +38269,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -37890,15 +38290,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17502] = 5, + [17569] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1078), 1, - anon_sym_except, - STATE(331), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(1068), 13, + ACTIONS(1079), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -37912,7 +38307,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1070), 35, + ACTIONS(1081), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37925,14 +38321,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -37948,13 +38347,18 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17565] = 3, + [17629] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1031), 13, + ACTIONS(1083), 1, + anon_sym_except, + STATE(331), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1041), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37965,7 +38369,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1029), 38, + ACTIONS(1043), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -37978,17 +38383,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -38004,23 +38406,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17624] = 8, + [17693] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(978), 1, anon_sym_else, - ACTIONS(1041), 1, + ACTIONS(1060), 1, anon_sym_elif, - STATE(399), 1, + STATE(327), 1, aux_sym_if_statement_repeat1, STATE(473), 1, sym_elif_clause, - STATE(582), 1, + STATE(529), 1, sym_else_clause, - ACTIONS(1033), 13, - sym__dedent, + ACTIONS(1064), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38031,7 +38433,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1035), 33, + ACTIONS(1062), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -38065,13 +38468,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17693] = 3, + [17763] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1081), 13, + ACTIONS(1088), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38082,7 +38485,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1083), 38, + ACTIONS(1086), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -38121,13 +38525,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17752] = 3, + [17823] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1037), 13, - sym__dedent, + ACTIONS(1088), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38138,7 +38542,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1039), 38, + ACTIONS(1086), 39, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -38177,10 +38582,170 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17811] = 3, + [17883] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, + sym_string, + STATE(791), 1, + sym_template_string, + STATE(1209), 1, + sym_expression, + STATE(1551), 1, + sym_exception_list, + ACTIONS(660), 2, + sym_ellipsis, + sym_float, + ACTIONS(654), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(966), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1198), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(985), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [17979] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, + sym_string, + STATE(791), 1, + sym_template_string, + STATE(1192), 1, + sym_expression, + STATE(1522), 1, + sym_with_item, + ACTIONS(660), 2, + sym_ellipsis, + sym_float, + ACTIONS(654), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(646), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(966), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1198), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(985), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [18075] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1081), 13, + ACTIONS(952), 1, + anon_sym_else, + ACTIONS(1066), 1, + anon_sym_elif, + STATE(350), 1, + aux_sym_if_statement_repeat1, + STATE(479), 1, + sym_elif_clause, + STATE(578), 1, + sym_else_clause, + ACTIONS(1056), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -38194,7 +38759,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1083), 38, + ACTIONS(1058), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -38207,17 +38773,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -38233,63 +38794,62 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17870] = 21, + [18145] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(705), 1, sym_primary_expression, - STATE(1205), 1, + STATE(1069), 1, sym_expression, - STATE(1550), 1, - sym_exception_list, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38307,124 +38867,208 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [17965] = 10, + [18238] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(270), 1, - anon_sym_COMMA, - ACTIONS(278), 1, - anon_sym_COLON_EQ, - ACTIONS(1085), 1, - anon_sym_for, - ACTIONS(1087), 1, - anon_sym_with, - ACTIONS(1089), 1, - anon_sym_def, - ACTIONS(280), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(302), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(265), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, + sym_template_string, + STATE(773), 1, + sym_primary_expression, + STATE(779), 1, + sym_string, + STATE(1112), 1, + sym_expression, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(298), 16, - sym__newline, - anon_sym_DOT, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(363), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1126), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(950), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [18331] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, + ACTIONS(579), 1, anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [18038] = 20, + STATE(772), 1, + sym_template_string, + STATE(773), 1, + sym_primary_expression, + STATE(779), 1, + sym_string, + STATE(1241), 1, + sym_expression, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(363), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1126), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(950), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [18424] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1224), 1, + STATE(1295), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38442,61 +39086,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18130] = 20, + [18517] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(801), 1, + ACTIONS(808), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(816), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(705), 1, sym_primary_expression, - STATE(1030), 1, + STATE(1072), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38514,61 +39159,209 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18222] = 20, + [18610] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1094), 1, + anon_sym_await, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(704), 1, + sym_primary_expression, + STATE(1109), 1, + sym_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(470), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(1092), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 15, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [18705] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(757), 1, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(704), 1, + sym_primary_expression, + STATE(1268), 1, + sym_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1037), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(720), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [18798] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(313), 1, anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1112), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1386), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38586,61 +39379,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18314] = 20, + [18891] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1324), 1, + STATE(1123), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38658,61 +39452,125 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18406] = 20, + [18984] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(69), 1, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1096), 1, + anon_sym_for, + ACTIONS(1098), 1, + anon_sym_with, + ACTIONS(1100), 1, + anon_sym_def, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(272), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, anon_sym_not, - ACTIONS(71), 1, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [19057] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1135), 1, + STATE(1331), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38730,61 +39588,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18498] = 20, + [19150] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1071), 1, + STATE(1125), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38802,61 +39661,121 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18590] = 20, + [19243] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(1106), 1, + anon_sym_elif, + STATE(350), 1, + aux_sym_if_statement_repeat1, + STATE(479), 1, + sym_elif_clause, + ACTIONS(1104), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_LBRACE, - ACTIONS(300), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1102), 35, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, anon_sym_lambda, - ACTIONS(308), 1, + anon_sym_yield, + sym_integer, + sym_identifier, anon_sym_await, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, + sym_true, + sym_false, + sym_none, + [19308] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1282), 1, + STATE(1214), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38874,61 +39793,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18682] = 20, + [19401] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(801), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, sym_template_string, - STATE(725), 1, + STATE(773), 1, sym_primary_expression, - STATE(1155), 1, + STATE(779), 1, + sym_string, + STATE(1255), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38946,61 +39866,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18774] = 20, + [19494] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1296), 1, + STATE(1085), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39018,61 +39939,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18866] = 20, + [19587] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(621), 1, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1214), 1, + STATE(1221), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39090,61 +40012,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18958] = 20, + [19680] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1197), 1, + STATE(1088), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39162,61 +40085,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19050] = 20, + [19773] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1297), 1, + STATE(1171), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39234,61 +40158,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19142] = 20, + [19866] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, STATE(1121), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39306,61 +40231,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19234] = 20, + [19959] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1292), 1, + STATE(1096), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39378,61 +40304,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19326] = 20, + [20052] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1123), 1, + STATE(1071), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39450,119 +40377,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19418] = 6, + [20145] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1095), 1, - anon_sym_elif, - STATE(354), 1, - aux_sym_if_statement_repeat1, - STATE(463), 1, - sym_elif_clause, - ACTIONS(1091), 13, - sym__string_start, - sym__template_string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1093), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, + ACTIONS(268), 1, sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [19482] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1279), 1, + STATE(1089), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39580,61 +40450,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19574] = 20, + [20238] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, - anon_sym_await, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(704), 1, sym_primary_expression, - STATE(1188), 1, + STATE(1267), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39652,61 +40523,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19666] = 20, + [20331] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(693), 1, - anon_sym_lambda, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, - anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(725), 1, + STATE(704), 1, sym_primary_expression, - STATE(1087), 1, + STATE(1297), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39724,61 +40596,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19758] = 20, + [20424] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1228), 1, + STATE(1298), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39796,61 +40669,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19850] = 20, + [20517] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1141), 1, + STATE(1313), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39868,61 +40742,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19942] = 20, + [20610] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1144), 1, + STATE(1118), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39940,61 +40815,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20034] = 20, + [20703] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(801), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, sym_template_string, - STATE(725), 1, + STATE(773), 1, sym_primary_expression, - STATE(1064), 1, + STATE(779), 1, + sym_string, + STATE(1316), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40012,61 +40888,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20126] = 20, + [20796] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1189), 1, + STATE(1081), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40084,61 +40961,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20218] = 20, + [20889] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1285), 1, + STATE(1076), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40156,61 +41034,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20310] = 20, + [20982] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(801), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, sym_identifier, - ACTIONS(807), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, sym_template_string, - STATE(725), 1, + STATE(773), 1, sym_primary_expression, - STATE(1062), 1, + STATE(779), 1, + sym_string, + STATE(1115), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40228,61 +41107,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20402] = 20, + [21075] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + STATE(780), 1, sym_primary_expression, - STATE(782), 1, + STATE(781), 1, sym_string, - STATE(1226), 1, + STATE(782), 1, + sym_template_string, + STATE(1152), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40300,61 +41180,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20494] = 20, + [21168] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1145), 1, + STATE(1220), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40372,122 +41253,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20586] = 9, - ACTIONS(3), 1, - sym_comment, - ACTIONS(270), 1, - anon_sym_COMMA, - ACTIONS(278), 1, - anon_sym_COLON_EQ, - ACTIONS(1098), 1, - sym__string_start, - STATE(1393), 1, - sym_string, - ACTIONS(280), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(302), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(265), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(298), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [20656] = 20, + [21261] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1156), 1, + STATE(1038), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40505,61 +41326,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20748] = 20, + [21354] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, + ACTIONS(976), 1, anon_sym_await, - STATE(621), 1, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1068), 1, + STATE(1182), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40577,61 +41399,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20840] = 20, + [21447] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1096), 1, + STATE(1159), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40649,61 +41472,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20932] = 20, + [21540] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + STATE(789), 1, sym_primary_expression, - STATE(782), 1, + STATE(790), 1, sym_string, - STATE(1109), 1, + STATE(791), 1, + sym_template_string, + STATE(1189), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40721,61 +41545,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21024] = 20, + [21633] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1262), 1, + STATE(1190), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40793,61 +41618,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21116] = 20, + [21726] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, + anon_sym_await, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1274), 1, + STATE(1201), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40865,61 +41691,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21208] = 20, + [21819] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(964), 1, + sym_identifier, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, + ACTIONS(976), 1, anon_sym_await, - STATE(621), 1, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1069), 1, + STATE(1188), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40937,61 +41764,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21300] = 20, + [21912] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(972), 1, + anon_sym_not, + ACTIONS(974), 1, + anon_sym_lambda, + ACTIONS(976), 1, anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + STATE(789), 1, sym_primary_expression, - STATE(782), 1, + STATE(790), 1, sym_string, - STATE(1258), 1, + STATE(791), 1, + sym_template_string, + STATE(1197), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41009,61 +41837,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21392] = 20, + [22005] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(597), 1, - anon_sym_LPAREN, - ACTIONS(603), 1, - anon_sym_LBRACK, - ACTIONS(691), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(693), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(801), 1, - sym_identifier, - ACTIONS(807), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(621), 1, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(725), 1, - sym_primary_expression, - STATE(1074), 1, + STATE(1162), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41081,133 +41910,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21484] = 20, + [22098] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1231), 1, - sym_expression, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(276), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [21576] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(263), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1166), 1, + STATE(779), 1, + sym_string, + STATE(1161), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41225,61 +41983,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21668] = 20, + [22191] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(794), 1, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(795), 1, + STATE(782), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1192), 1, + STATE(1165), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41297,61 +42056,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21760] = 20, + [22284] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1295), 1, + STATE(1167), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41369,61 +42129,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21852] = 20, + [22377] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(794), 1, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(795), 1, + STATE(782), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1193), 1, + STATE(1168), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41441,61 +42202,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21944] = 20, + [22470] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(794), 1, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(795), 1, + STATE(782), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1194), 1, + STATE(1170), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41513,61 +42275,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22036] = 20, + [22563] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1269), 1, + STATE(1326), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41585,66 +42348,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22128] = 21, + [22656] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - ACTIONS(1100), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(1104), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1096), 1, + STATE(779), 1, + sym_string, + STATE(1247), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(509), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(1102), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 15, + STATE(950), 17, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -41658,61 +42421,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22222] = 20, + [22749] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(780), 1, + sym_primary_expression, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(719), 1, - sym_primary_expression, - STATE(1322), 1, + STATE(1169), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41730,61 +42494,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22314] = 20, + [22842] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(969), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(976), 1, anon_sym_await, - STATE(794), 1, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(822), 1, - sym_primary_expression, - STATE(1195), 1, + STATE(1233), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41802,61 +42567,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22406] = 20, + [22935] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(705), 1, sym_primary_expression, - STATE(1208), 1, + STATE(1238), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41874,61 +42640,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22498] = 20, + [23028] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(971), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(705), 1, sym_primary_expression, - STATE(1209), 1, + STATE(1038), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41946,61 +42713,121 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22590] = 20, + [23121] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(1109), 1, + anon_sym_elif, + STATE(392), 1, + aux_sym_if_statement_repeat1, + STATE(473), 1, + sym_elif_clause, + ACTIONS(1104), 13, sym__string_start, - ACTIONS(312), 1, sym__template_string_start, - ACTIONS(597), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(603), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(691), 1, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1102), 35, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - ACTIONS(693), 1, anon_sym_lambda, - ACTIONS(801), 1, + anon_sym_yield, + sym_integer, sym_identifier, - ACTIONS(807), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + sym_true, + sym_false, + sym_none, + [23186] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, sym_template_string, - STATE(725), 1, + STATE(773), 1, sym_primary_expression, - STATE(1085), 1, + STATE(779), 1, + sym_string, + STATE(1278), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(805), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42018,61 +42845,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22682] = 20, + [23279] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1125), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1350), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42090,61 +42918,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22774] = 20, + [23372] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1030), 1, + STATE(1098), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42162,61 +42991,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22866] = 20, + [23465] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(749), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(766), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, + sym_template_string, + STATE(773), 1, sym_primary_expression, - STATE(767), 1, + STATE(779), 1, sym_string, - STATE(768), 1, - sym_template_string, - STATE(1165), 1, + STATE(1129), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42234,61 +43064,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22958] = 20, + [23558] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1103), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1109), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42306,61 +43137,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23050] = 20, + [23651] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(757), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1104), 1, + STATE(705), 1, + sym_primary_expression, + STATE(1224), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42378,61 +43210,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23142] = 20, + [23744] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(749), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(755), 1, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(757), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(766), 1, + STATE(780), 1, sym_primary_expression, - STATE(767), 1, + STATE(781), 1, sym_string, - STATE(768), 1, + STATE(782), 1, sym_template_string, - STATE(1105), 1, + STATE(1145), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42450,61 +43283,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23234] = 20, + [23837] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(749), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(766), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, + sym_template_string, + STATE(773), 1, sym_primary_expression, - STATE(767), 1, + STATE(779), 1, sym_string, - STATE(768), 1, - sym_template_string, - STATE(1106), 1, + STATE(1225), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42522,65 +43356,67 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23326] = 20, + [23930] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(1112), 1, + sym_identifier, + ACTIONS(1116), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1349), 1, + STATE(1098), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + STATE(470), 2, + sym_attribute, + sym_subscript, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(1114), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -42594,61 +43430,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23418] = 20, + [24025] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1107), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1292), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42666,119 +43503,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23510] = 6, + [24118] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1106), 1, - anon_sym_elif, - STATE(399), 1, - aux_sym_if_statement_repeat1, - STATE(473), 1, - sym_elif_clause, - ACTIONS(1091), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1093), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, + ACTIONS(305), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, + ACTIONS(313), 1, anon_sym_await, - sym_true, - sym_false, - sym_none, - [23574] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, - anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1108), 1, + STATE(704), 1, + sym_primary_expression, + STATE(1347), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42796,61 +43576,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23666] = 20, + [24211] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(961), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(969), 1, - anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, + ACTIONS(367), 1, anon_sym_await, - STATE(794), 1, - sym_string, - STATE(795), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(772), 1, sym_template_string, - STATE(822), 1, + STATE(773), 1, sym_primary_expression, - STATE(1210), 1, + STATE(779), 1, + sym_string, + STATE(1284), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42868,61 +43649,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23758] = 20, + [24304] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1361), 1, + STATE(1363), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42940,61 +43722,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23850] = 20, + [24397] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(757), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(759), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(1168), 1, + STATE(705), 1, + sym_primary_expression, + STATE(1091), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43012,61 +43795,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23942] = 20, + [24490] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(361), 1, + sym_identifier, + ACTIONS(367), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(747), 1, - anon_sym_not, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(719), 1, + STATE(773), 1, sym_primary_expression, - STATE(1307), 1, + STATE(779), 1, + sym_string, + STATE(1319), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43084,61 +43868,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24034] = 20, + [24583] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(718), 1, + sym_identifier, + ACTIONS(732), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(734), 1, + anon_sym_lambda, + ACTIONS(736), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(775), 1, sym_primary_expression, - STATE(1077), 1, + STATE(1153), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43156,61 +43941,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24126] = 20, + [24676] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1177), 1, + STATE(1139), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43228,61 +44014,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24218] = 20, + [24769] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(718), 1, + sym_identifier, + ACTIONS(732), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(734), 1, + anon_sym_lambda, + ACTIONS(736), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(775), 1, sym_primary_expression, - STATE(1334), 1, + STATE(1154), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43300,61 +44087,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24310] = 20, + [24862] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1149), 1, + STATE(1155), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43372,61 +44160,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24402] = 20, + [24955] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1150), 1, + STATE(1156), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43444,61 +44233,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24494] = 20, + [25048] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1151), 1, + STATE(1157), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43516,61 +44306,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24586] = 20, + [25141] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1152), 1, + STATE(1163), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43588,61 +44379,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24678] = 20, + [25234] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1153), 1, + STATE(1166), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43660,61 +44452,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24770] = 20, + [25327] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(718), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(775), 1, sym_primary_expression, - STATE(1157), 1, + STATE(1038), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(720), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43732,61 +44525,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24862] = 20, + [25420] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(653), 1, - anon_sym_LPAREN, - ACTIONS(659), 1, - anon_sym_LBRACK, - ACTIONS(713), 1, + ACTIONS(964), 1, sym_identifier, - ACTIONS(725), 1, + ACTIONS(972), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(974), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(976), 1, anon_sym_await, - STATE(621), 1, + STATE(789), 1, + sym_primary_expression, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(772), 1, - sym_primary_expression, - STATE(1102), 1, + STATE(1266), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(646), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(966), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1198), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43804,61 +44598,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24954] = 20, + [25513] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1082), 1, + STATE(1353), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43876,61 +44671,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25046] = 20, + [25606] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(713), 1, - sym_identifier, - ACTIONS(725), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(727), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(729), 1, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(772), 1, + STATE(705), 1, sym_primary_expression, - STATE(1030), 1, + STATE(1077), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(721), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43948,133 +44744,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25138] = 20, + [25699] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1335), 1, - sym_expression, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(276), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1031), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(724), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [25230] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, - anon_sym_LBRACE, - ACTIONS(625), 1, - sym__string_start, - ACTIONS(627), 1, - sym__template_string_start, - ACTIONS(749), 1, - sym_identifier, - ACTIONS(755), 1, - anon_sym_not, - ACTIONS(757), 1, - anon_sym_lambda, - ACTIONS(759), 1, - anon_sym_await, - STATE(766), 1, - sym_primary_expression, - STATE(767), 1, - sym_string, - STATE(768), 1, - sym_template_string, - STATE(1183), 1, + STATE(1361), 1, sym_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(753), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1129), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44092,61 +44817,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25322] = 20, + [25792] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1339), 1, + STATE(1199), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44164,61 +44890,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25414] = 20, + [25885] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1089), 1, + STATE(1387), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44236,61 +44963,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25506] = 20, + [25978] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1366), 1, + STATE(1367), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44308,61 +45036,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25598] = 20, + [26071] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1345), 1, + STATE(1370), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44380,61 +45109,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25690] = 20, + [26164] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1346), 1, + STATE(1371), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44452,61 +45182,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25782] = 20, + [26257] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1347), 1, + STATE(1073), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44524,61 +45255,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25874] = 20, + [26350] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1238), 1, + STATE(1359), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44596,61 +45328,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25966] = 20, + [26443] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1063), 1, + STATE(1083), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44668,61 +45401,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26058] = 20, + [26536] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1065), 1, + STATE(1325), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44740,61 +45474,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26150] = 20, + [26629] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, - sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, - anon_sym_lambda, - ACTIONS(308), 1, - anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(621), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(808), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(705), 1, sym_primary_expression, - STATE(1070), 1, + STATE(1082), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(810), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44812,61 +45547,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26242] = 20, + [26722] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1350), 1, + STATE(1376), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44884,61 +45620,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26334] = 20, + [26815] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(647), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(961), 1, - sym_identifier, - ACTIONS(969), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(971), 1, - anon_sym_lambda, - ACTIONS(973), 1, - anon_sym_await, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(822), 1, + STATE(704), 1, sym_primary_expression, - STATE(1243), 1, + STATE(1365), 1, sym_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(965), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1176), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44956,61 +45693,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26426] = 20, + [26908] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(361), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(367), 1, anon_sym_await, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(779), 1, + STATE(773), 1, sym_primary_expression, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(1191), 1, + STATE(1147), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(363), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1126), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45028,61 +45766,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26518] = 20, + [27001] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(69), 1, - anon_sym_not, - ACTIONS(71), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(81), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(314), 1, - sym_identifier, - ACTIONS(320), 1, - anon_sym_await, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(763), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(694), 1, + sym_string, + STATE(698), 1, sym_template_string, - STATE(779), 1, + STATE(704), 1, sym_primary_expression, - STATE(782), 1, - sym_string, - STATE(1227), 1, + STATE(1261), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45100,61 +45839,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26610] = 20, + [27094] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1351), 1, + STATE(1377), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45172,61 +45912,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26702] = 20, + [27187] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(263), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(300), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(308), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(747), 1, + ACTIONS(768), 1, anon_sym_not, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(719), 1, + STATE(704), 1, sym_primary_expression, - STATE(1352), 1, + STATE(1378), 1, sym_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(276), 5, + ACTIONS(270), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1031), 6, + STATE(1037), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45244,61 +45985,125 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26794] = 20, + [27280] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(69), 1, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1118), 1, + anon_sym_for, + ACTIONS(1120), 1, + anon_sym_with, + ACTIONS(1122), 1, + anon_sym_def, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(272), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, anon_sym_not, - ACTIONS(71), 1, - anon_sym_lambda, - ACTIONS(81), 1, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [27353] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(630), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(314), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(320), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - STATE(763), 1, - sym_template_string, - STATE(779), 1, + STATE(780), 1, sym_primary_expression, - STATE(782), 1, + STATE(781), 1, sym_string, - STATE(1163), 1, + STATE(782), 1, + sym_template_string, + STATE(1164), 1, sym_expression, - ACTIONS(75), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(316), 5, + ACTIONS(752), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1158), 6, + STATE(1131), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(908), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45316,13 +46121,13 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [26886] = 3, + [27446] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1109), 13, + ACTIONS(1126), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45333,7 +46138,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1111), 36, + ACTIONS(1124), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45370,10 +46176,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [26943] = 3, + [27504] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1115), 13, + ACTIONS(1132), 1, + anon_sym_case, + STATE(444), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1130), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -45387,7 +46198,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1113), 36, + ACTIONS(1128), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45400,13 +46212,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -45424,13 +46233,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27000] = 3, + [27566] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1119), 13, - sym__dedent, + ACTIONS(1134), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45441,7 +46250,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1117), 36, + ACTIONS(1136), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45478,13 +46288,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27057] = 3, + [27624] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1123), 13, - sym__dedent, + ACTIONS(1138), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45495,7 +46305,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1121), 36, + ACTIONS(1140), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45532,13 +46343,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27114] = 3, + [27682] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1127), 13, - sym__dedent, + ACTIONS(1142), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45549,7 +46360,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1125), 36, + ACTIONS(1144), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45586,10 +46398,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27171] = 3, + [27740] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1131), 13, + ACTIONS(1150), 1, + anon_sym_case, + STATE(444), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1148), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -45603,7 +46420,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1129), 36, + ACTIONS(1146), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45616,13 +46434,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -45640,10 +46455,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27228] = 3, + [27802] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1133), 13, + ACTIONS(1153), 1, + anon_sym_case, + STATE(445), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1148), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -45657,7 +46477,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1135), 36, + ACTIONS(1146), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45670,13 +46491,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -45694,13 +46512,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27285] = 3, + [27864] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1139), 13, - sym__dedent, + ACTIONS(1156), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45711,7 +46529,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1137), 36, + ACTIONS(1158), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45748,13 +46567,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27342] = 3, + [27922] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1109), 13, - sym__dedent, + ACTIONS(1160), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45765,7 +46584,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1111), 36, + ACTIONS(1162), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45802,10 +46622,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27399] = 3, + [27980] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1133), 13, + ACTIONS(1166), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -45819,7 +46639,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1135), 36, + ACTIONS(1164), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45856,13 +46677,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27456] = 3, + [28038] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1143), 13, - sym__dedent, + ACTIONS(1166), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45873,7 +46694,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1141), 36, + ACTIONS(1164), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45910,13 +46732,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27513] = 3, + [28096] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1147), 13, - sym__dedent, + ACTIONS(1168), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -45927,7 +46749,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1145), 36, + ACTIONS(1170), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -45964,10 +46787,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27570] = 3, + [28154] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1143), 13, + ACTIONS(1126), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -45981,7 +46804,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1141), 36, + ACTIONS(1124), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46018,13 +46842,135 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27627] = 3, + [28212] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(1147), 13, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1172), 1, + sym__string_start, + STATE(1411), 1, + sym_string, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(272), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [28282] = 9, + ACTIONS(3), 1, + sym_comment, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1174), 1, + anon_sym_import, + ACTIONS(1176), 1, + anon_sym_from, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(272), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [28352] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1160), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46035,7 +46981,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1145), 36, + ACTIONS(1162), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46072,15 +47019,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27684] = 5, + [28410] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1153), 1, - anon_sym_case, - STATE(450), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1149), 13, + ACTIONS(1178), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -46094,7 +47036,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1151), 33, + ACTIONS(1180), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46107,10 +47050,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -46128,13 +47074,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27745] = 3, + [28468] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1127), 13, + ACTIONS(1134), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46145,7 +47091,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1125), 36, + ACTIONS(1136), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46182,18 +47129,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27802] = 5, + [28526] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1160), 1, - anon_sym_case, - STATE(460), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1158), 13, - sym__dedent, + ACTIONS(1182), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46204,7 +47146,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1156), 33, + ACTIONS(1184), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46217,10 +47160,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -46238,18 +47184,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27863] = 5, + [28584] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1162), 1, - anon_sym_case, - STATE(450), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1158), 13, + ACTIONS(1182), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46260,7 +47201,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1156), 33, + ACTIONS(1184), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46273,10 +47215,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_except, + anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -46294,13 +47239,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27924] = 3, + [28642] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1115), 13, + ACTIONS(1178), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46311,7 +47256,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1113), 36, + ACTIONS(1180), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46348,13 +47294,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27981] = 3, + [28700] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1131), 13, + ACTIONS(1138), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46365,7 +47311,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1129), 36, + ACTIONS(1140), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46402,10 +47349,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28038] = 3, + [28758] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1119), 13, + ACTIONS(1186), 1, + anon_sym_case, + STATE(445), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1130), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -46419,7 +47371,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1117), 36, + ACTIONS(1128), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46432,13 +47385,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_except, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -46456,13 +47406,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28095] = 3, + [28820] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1139), 13, + ACTIONS(1142), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46473,7 +47423,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1137), 36, + ACTIONS(1144), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46510,72 +47461,68 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28152] = 8, + [28878] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(270), 1, - anon_sym_COMMA, - ACTIONS(278), 1, - anon_sym_COLON_EQ, - ACTIONS(1164), 1, - sym_identifier, - ACTIONS(280), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(298), 10, - sym__newline, - anon_sym_DOT, + ACTIONS(1156), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, anon_sym_LPAREN, - anon_sym_LBRACK, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_SEMI, - ACTIONS(302), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(265), 21, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, anon_sym_STAR_STAR, anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1158), 37, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_except, + anon_sym_finally, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - anon_sym_is, - [28219] = 3, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [28936] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1123), 13, + ACTIONS(1168), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46586,7 +47533,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1121), 36, + ACTIONS(1170), 37, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46623,118 +47571,136 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28276] = 5, + [28994] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1166), 1, - anon_sym_case, - STATE(460), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1149), 13, - sym__dedent, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, + ACTIONS(694), 1, + sym_identifier, + ACTIONS(698), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(706), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(708), 1, + anon_sym_await, + ACTIONS(1188), 1, + anon_sym_RPAREN, + ACTIONS(1190), 1, + anon_sym_STAR, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(1017), 1, + sym_primary_expression, + STATE(1355), 1, + sym_pattern, + STATE(1742), 1, + sym__patterns, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1151), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + STATE(842), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1005), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [28337] = 21, + STATE(720), 15, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [29089] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(1171), 1, + ACTIONS(1190), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1005), 1, + STATE(1002), 1, sym_pattern, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1169), 2, + ACTIONS(1192), 2, anon_sym_RPAREN, anon_sym_RBRACK, - STATE(849), 2, + STATE(842), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -46750,67 +47716,10 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [28429] = 7, + [29182] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1175), 1, - anon_sym_COMMA, - ACTIONS(1180), 1, - anon_sym_COLON_EQ, - ACTIONS(1182), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(1184), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1178), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1173), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [28493] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1186), 13, + ACTIONS(1194), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -46824,7 +47733,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1188), 35, + ACTIONS(1196), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46860,10 +47770,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28549] = 3, + [29239] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1190), 13, + ACTIONS(978), 1, + anon_sym_else, + STATE(516), 1, + sym_else_clause, + ACTIONS(1198), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -46877,7 +47791,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1192), 35, + ACTIONS(1200), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -46890,8 +47805,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -46913,17 +47826,30 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28605] = 7, + [29300] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(270), 1, + ACTIONS(277), 1, anon_sym_COMMA, - ACTIONS(278), 1, + ACTIONS(283), 1, anon_sym_COLON_EQ, - ACTIONS(280), 2, + ACTIONS(1202), 1, + sym_identifier, + ACTIONS(285), 2, anon_sym_COLON, anon_sym_EQ, - ACTIONS(302), 13, + ACTIONS(303), 10, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_SEMI, + ACTIONS(307), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -46937,14 +47863,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - ACTIONS(265), 15, + ACTIONS(272), 21, anon_sym_STAR, anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_STAR_STAR, anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, @@ -46953,11 +47884,53 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_LT, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 16, - sym__newline, + anon_sym_is, + [29367] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1213), 1, + anon_sym_EQ, + ACTIONS(1206), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1211), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1209), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 16, anon_sym_DOT, anon_sym_LPAREN, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_LBRACK, anon_sym_not, @@ -46969,118 +47942,63 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [28669] = 5, + [29430] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, - anon_sym_else, - STATE(600), 1, - sym_else_clause, - ACTIONS(1196), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1194), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [28729] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(1171), 1, + ACTIONS(1190), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1005), 1, + STATE(1002), 1, sym_pattern, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1198), 2, + ACTIONS(1215), 2, anon_sym_RPAREN, anon_sym_RBRACK, - STATE(849), 2, + STATE(842), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -47096,14 +48014,10 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [28821] = 5, + [29523] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(953), 1, - anon_sym_finally, - STATE(517), 1, - sym_finally_clause, - ACTIONS(1200), 13, + ACTIONS(1217), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47117,7 +48031,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1202), 33, + ACTIONS(1219), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47130,6 +48045,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -47151,17 +48068,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28881] = 5, + [29580] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, - anon_sym_else, - STATE(595), 1, - sym_else_clause, - ACTIONS(1206), 13, - sym__dedent, + ACTIONS(1221), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47172,7 +48085,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1204), 33, + ACTIONS(1223), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47185,6 +48099,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -47206,17 +48122,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28941] = 5, + [29637] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(945), 1, - anon_sym_finally, - STATE(587), 1, - sym_finally_clause, - ACTIONS(1210), 13, - sym__dedent, + ACTIONS(978), 1, + anon_sym_else, + STATE(600), 1, + sym_else_clause, + ACTIONS(1225), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47227,7 +48143,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1208), 33, + ACTIONS(1227), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47261,10 +48178,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29001] = 3, + [29698] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1212), 13, + ACTIONS(978), 1, + anon_sym_else, + STATE(538), 1, + sym_else_clause, + ACTIONS(1229), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47278,7 +48199,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1214), 35, + ACTIONS(1231), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47291,8 +48213,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -47314,14 +48234,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29057] = 5, + [29759] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(953), 1, + ACTIONS(982), 1, anon_sym_finally, - STATE(530), 1, + STATE(610), 1, sym_finally_clause, - ACTIONS(1210), 13, + ACTIONS(1233), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47335,7 +48255,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1208), 33, + ACTIONS(1235), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47369,10 +48290,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29117] = 3, + [29820] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1186), 13, + ACTIONS(952), 1, + anon_sym_else, + STATE(552), 1, + sym_else_clause, + ACTIONS(1229), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -47386,7 +48311,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1188), 35, + ACTIONS(1231), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47399,8 +48325,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -47422,124 +48346,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29173] = 7, + [29881] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1219), 1, - anon_sym_COLON_EQ, - ACTIONS(1221), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(1216), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1223), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1173), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - ACTIONS(1178), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - [29237] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1001), 16, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(999), 32, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - anon_sym_SEMI, - [29293] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(949), 1, + ACTIONS(978), 1, anon_sym_else, - STATE(544), 1, + STATE(530), 1, sym_else_clause, - ACTIONS(1196), 13, + ACTIONS(1237), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47553,7 +48367,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1194), 33, + ACTIONS(1239), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47587,14 +48402,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29353] = 5, + [29942] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, - anon_sym_else, - STATE(572), 1, - sym_else_clause, - ACTIONS(1227), 13, + ACTIONS(1221), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -47608,7 +48419,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1225), 33, + ACTIONS(1223), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47621,6 +48433,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -47642,86 +48456,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29413] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(663), 1, - sym_identifier, - ACTIONS(665), 1, - anon_sym_LPAREN, - ACTIONS(675), 1, - anon_sym_LBRACK, - ACTIONS(677), 1, - anon_sym_await, - ACTIONS(1171), 1, - anon_sym_STAR, - ACTIONS(1229), 1, - anon_sym_RPAREN, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1012), 1, - sym_primary_expression, - STATE(1356), 1, - sym_pattern, - STATE(1643), 1, - sym__patterns, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(849), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(999), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(669), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [29507] = 5, + [29999] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(945), 1, + ACTIONS(956), 1, anon_sym_finally, - STATE(574), 1, + STATE(571), 1, sym_finally_clause, - ACTIONS(1200), 13, + ACTIONS(1243), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -47735,7 +48477,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1202), 33, + ACTIONS(1241), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47769,17 +48512,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29567] = 5, + [30060] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, - anon_sym_else, - STATE(592), 1, - sym_else_clause, - ACTIONS(1233), 13, - sym__dedent, + ACTIONS(982), 1, + anon_sym_finally, + STATE(535), 1, + sym_finally_clause, + ACTIONS(1243), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47790,7 +48533,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1231), 33, + ACTIONS(1241), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47824,17 +48568,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29627] = 5, + [30121] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(952), 1, anon_sym_else, - STATE(536), 1, + STATE(581), 1, sym_else_clause, - ACTIONS(1233), 13, + ACTIONS(1225), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47845,7 +48589,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1231), 33, + ACTIONS(1227), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47879,14 +48624,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29687] = 5, + [30182] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(978), 1, anon_sym_else, STATE(528), 1, sym_else_clause, - ACTIONS(1235), 13, + ACTIONS(1245), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47900,7 +48645,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1237), 33, + ACTIONS(1247), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -47934,70 +48680,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29747] = 3, + [30243] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1015), 16, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_EQ, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1013), 32, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - anon_sym_SEMI, - [29803] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(949), 1, - anon_sym_else, - STATE(539), 1, - sym_else_clause, - ACTIONS(1206), 13, + ACTIONS(956), 1, + anon_sym_finally, + STATE(584), 1, + sym_finally_clause, + ACTIONS(1233), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48008,7 +48701,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1204), 33, + ACTIONS(1235), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48042,17 +48736,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29863] = 5, + [30304] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, + ACTIONS(952), 1, anon_sym_else, STATE(588), 1, sym_else_clause, - ACTIONS(1239), 13, + ACTIONS(1245), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48063,7 +48757,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1241), 33, + ACTIONS(1247), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48097,10 +48792,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29923] = 3, + [30365] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1212), 13, + ACTIONS(952), 1, + anon_sym_else, + STATE(592), 1, + sym_else_clause, + ACTIONS(1251), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48114,7 +48813,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1214), 35, + ACTIONS(1249), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48127,8 +48827,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, - anon_sym_elif, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -48150,67 +48848,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29979] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(585), 1, - anon_sym_COLON_EQ, - ACTIONS(587), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(580), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(593), 13, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(298), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - ACTIONS(265), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - [30043] = 3, + [30426] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1190), 13, + ACTIONS(1194), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48224,7 +48865,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1192), 35, + ACTIONS(1196), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48260,14 +48902,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30099] = 5, + [30483] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(952), 1, anon_sym_else, - STATE(560), 1, + STATE(597), 1, sym_else_clause, - ACTIONS(1239), 13, + ACTIONS(1198), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48281,7 +48923,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1241), 33, + ACTIONS(1200), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48315,17 +48958,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30159] = 5, + [30544] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(949), 1, - anon_sym_else, - STATE(515), 1, - sym_else_clause, - ACTIONS(1227), 13, + ACTIONS(1217), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48336,7 +48975,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1225), 33, + ACTIONS(1219), 36, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48349,6 +48989,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_break, anon_sym_continue, anon_sym_if, + anon_sym_elif, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_while, @@ -48370,17 +49012,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30219] = 5, + [30601] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(941), 1, + ACTIONS(978), 1, anon_sym_else, - STATE(585), 1, + STATE(553), 1, sym_else_clause, - ACTIONS(1235), 13, - sym__dedent, + ACTIONS(1251), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48391,7 +49033,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1237), 33, + ACTIONS(1249), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48425,10 +49068,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30279] = 3, + [30662] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1245), 13, + ACTIONS(952), 1, + anon_sym_else, + STATE(569), 1, + sym_else_clause, + ACTIONS(1237), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48442,7 +49089,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1243), 34, + ACTIONS(1239), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48459,7 +49107,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_finally, anon_sym_with, anon_sym_match, anon_sym_def, @@ -48477,105 +49124,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30334] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(663), 1, - sym_identifier, - ACTIONS(665), 1, - anon_sym_LPAREN, - ACTIONS(675), 1, - anon_sym_LBRACK, - ACTIONS(677), 1, - anon_sym_await, - ACTIONS(1171), 1, - anon_sym_STAR, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1012), 1, - sym_primary_expression, - STATE(1504), 1, - sym_pattern, - STATE(1716), 1, - sym_pattern_list, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(849), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(999), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(669), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [30425] = 6, + [30723] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1175), 1, - anon_sym_COMMA, - ACTIONS(1182), 1, - anon_sym_EQ, - ACTIONS(1184), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1178), 15, + ACTIONS(1050), 16, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_STAR_STAR, + anon_sym_EQ, anon_sym_AT, anon_sym_SLASH, anon_sym_PERCENT, @@ -48585,11 +49144,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_LT, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 16, + ACTIONS(1048), 32, sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_LBRACK, anon_sym_not, @@ -48601,11 +49163,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, anon_sym_SEMI, - [30486] = 3, + [30779] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1247), 13, + ACTIONS(1253), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -48619,7 +49194,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1249), 34, + ACTIONS(1255), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48654,113 +49230,119 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30541] = 3, + [30835] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1251), 13, - sym__string_start, - sym__template_string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(272), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1253), 34, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_case, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + anon_sym_in, + anon_sym_LBRACK, anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [30596] = 21, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [30899] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(1171), 1, + ACTIONS(1190), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - STATE(1461), 1, + STATE(1504), 1, sym_pattern, - STATE(1657), 1, + STATE(1674), 1, sym_pattern_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(849), 2, + STATE(842), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -48776,10 +49358,10 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [30687] = 3, + [30991] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1245), 13, + ACTIONS(1257), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -48793,7 +49375,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1243), 34, + ACTIONS(1259), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48810,9 +49393,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_while, anon_sym_try, - anon_sym_finally, anon_sym_with, anon_sym_match, + anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -48828,13 +49411,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30742] = 3, + [31047] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1255), 13, + ACTIONS(1253), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48845,7 +49428,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1257), 34, + ACTIONS(1255), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48862,9 +49446,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_while, anon_sym_try, + anon_sym_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -48880,10 +49464,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30797] = 3, + [31103] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1259), 13, + ACTIONS(1261), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -48897,7 +49481,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1261), 34, + ACTIONS(1263), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48932,13 +49517,70 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30852] = 3, + [31159] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1263), 13, + ACTIONS(1265), 1, + anon_sym_COMMA, + ACTIONS(1268), 1, + anon_sym_COLON_EQ, + ACTIONS(1270), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1272), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1209), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [31223] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1276), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48949,7 +49591,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1265), 34, + ACTIONS(1274), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -48984,65 +49627,81 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30907] = 6, + [31279] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(1269), 1, - anon_sym_COMMA, - ACTIONS(1276), 1, - anon_sym_EQ, - ACTIONS(1274), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1272), 15, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(694), 1, + sym_identifier, + ACTIONS(698), 1, + anon_sym_LPAREN, + ACTIONS(706), 1, + anon_sym_LBRACK, + ACTIONS(708), 1, + anon_sym_await, + ACTIONS(1190), 1, anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(1017), 1, + sym_primary_expression, + STATE(1515), 1, + sym_pattern, + STATE(1750), 1, + sym_pattern_list, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(842), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1267), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [30968] = 3, + anon_sym_TILDE, + STATE(1005), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(696), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(720), 15, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [31371] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1247), 13, + ACTIONS(1280), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49056,7 +49715,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1249), 34, + ACTIONS(1278), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49091,10 +49751,63 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31023] = 3, + [31427] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1251), 13, + ACTIONS(1032), 16, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_EQ, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 32, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + anon_sym_SEMI, + [31483] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1257), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49108,7 +49821,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1253), 34, + ACTIONS(1259), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49143,10 +49857,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31078] = 3, + [31539] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1255), 13, + ACTIONS(1261), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49160,7 +49874,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1257), 34, + ACTIONS(1263), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49195,10 +49910,81 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31133] = 3, + [31595] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(1259), 13, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(694), 1, + sym_identifier, + ACTIONS(698), 1, + anon_sym_LPAREN, + ACTIONS(706), 1, + anon_sym_LBRACK, + ACTIONS(708), 1, + anon_sym_await, + ACTIONS(1190), 1, + anon_sym_STAR, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(1017), 1, + sym_primary_expression, + STATE(1531), 1, + sym_pattern, + STATE(1751), 1, + sym_pattern_list, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(842), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1005), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(696), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(720), 15, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [31687] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1284), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49212,7 +49998,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1261), 34, + ACTIONS(1282), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49247,13 +50034,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31188] = 3, + [31743] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1263), 13, - sym__dedent, + ACTIONS(1284), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49264,7 +50051,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1265), 34, + ACTIONS(1282), 35, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49299,61 +50087,62 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31243] = 21, + [31799] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(1171), 1, + ACTIONS(1190), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - STATE(1496), 1, + STATE(1405), 1, sym_pattern, - STATE(1661), 1, + STATE(1718), 1, sym_pattern_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(849), 2, + STATE(842), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -49369,116 +50158,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31334] = 6, + [31891] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(1221), 1, - anon_sym_EQ, - ACTIONS(1216), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1173), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, - anon_sym_LBRACK, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - ACTIONS(1223), 14, - anon_sym_COLON, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - ACTIONS(1178), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT, - anon_sym_GT, - [31395] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(1171), 1, + ACTIONS(1190), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - STATE(1500), 1, + STATE(1532), 1, sym_pattern, - STATE(1707), 1, + STATE(1678), 1, sym_pattern_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(849), 2, + STATE(842), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -49494,131 +50229,168 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31486] = 21, + [31983] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(1276), 13, sym__string_start, - ACTIONS(312), 1, sym__template_string_start, - ACTIONS(663), 1, - sym_identifier, - ACTIONS(665), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(675), 1, - anon_sym_LBRACK, - ACTIONS(677), 1, - anon_sym_await, - ACTIONS(1171), 1, - anon_sym_STAR, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1012), 1, - sym_primary_expression, - STATE(1473), 1, - sym_pattern, - STATE(1672), 1, - sym_pattern_list, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(849), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(999), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(306), 4, + sym_ellipsis, + sym_float, + ACTIONS(1274), 35, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_case, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, sym_integer, + sym_identifier, + anon_sym_await, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + [32039] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1280), 13, + sym__string_start, + sym__template_string_start, + ts_builtin_sym_end, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1278), 35, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_finally, + anon_sym_with, anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [31577] = 21, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [32095] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, + ACTIONS(694), 1, sym_identifier, - ACTIONS(665), 1, + ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(706), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(708), 1, anon_sym_await, - ACTIONS(1171), 1, + ACTIONS(1190), 1, anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - STATE(1505), 1, + STATE(1530), 1, sym_pattern, - STATE(1719), 1, + STATE(1748), 1, sym_pattern_list, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(849), 2, + STATE(842), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, + STATE(1005), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -49634,14 +50406,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31668] = 6, + [32187] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1288), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1286), 34, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [32242] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1280), 1, + ACTIONS(1292), 1, anon_sym_COMMA, - ACTIONS(1287), 1, + ACTIONS(1299), 1, anon_sym_EQ, - ACTIONS(1285), 14, + ACTIONS(1297), 14, anon_sym_COLON, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, @@ -49656,7 +50480,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - ACTIONS(1283), 15, + ACTIONS(1295), 15, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -49672,7 +50496,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_LT, anon_sym_LT, anon_sym_GT, - ACTIONS(1278), 16, + ACTIONS(1290), 16, sym__newline, anon_sym_DOT, anon_sym_LPAREN, @@ -49689,10 +50513,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [31729] = 3, + [32303] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1289), 13, + ACTIONS(1301), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -49706,7 +50530,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1291), 33, + ACTIONS(1303), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49740,10 +50565,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31783] = 3, + [32358] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1293), 13, + ACTIONS(1305), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -49757,7 +50582,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1295), 33, + ACTIONS(1307), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49791,10 +50617,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31837] = 3, + [32413] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1297), 13, + ACTIONS(1309), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -49808,7 +50634,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1299), 33, + ACTIONS(1311), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49842,10 +50669,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31891] = 3, + [32468] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1301), 13, + ACTIONS(1313), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -49859,7 +50686,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1303), 33, + ACTIONS(1315), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49893,10 +50721,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31945] = 3, + [32523] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1210), 13, + ACTIONS(1317), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -49910,7 +50738,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1208), 33, + ACTIONS(1319), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49944,10 +50773,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31999] = 3, + [32578] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1305), 13, + ACTIONS(1321), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -49961,7 +50790,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1307), 33, + ACTIONS(1323), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -49995,10 +50825,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32053] = 3, + [32633] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1309), 13, + ACTIONS(1325), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50012,7 +50842,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1311), 33, + ACTIONS(1327), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50046,10 +50877,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32107] = 3, + [32688] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1313), 13, + ACTIONS(1329), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50063,7 +50894,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1315), 33, + ACTIONS(1331), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50097,10 +50929,65 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32161] = 3, + [32743] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1317), 13, + ACTIONS(1335), 1, + anon_sym_COMMA, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1340), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1338), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1333), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [32804] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1344), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50114,7 +51001,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1319), 33, + ACTIONS(1346), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50148,10 +51036,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32215] = 3, + [32859] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1321), 13, + ACTIONS(1348), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50165,7 +51053,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1323), 33, + ACTIONS(1350), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50199,10 +51088,79 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32269] = 3, + [32914] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1325), 13, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(694), 1, + sym_identifier, + ACTIONS(698), 1, + anon_sym_LPAREN, + ACTIONS(706), 1, + anon_sym_LBRACK, + ACTIONS(708), 1, + anon_sym_await, + ACTIONS(1190), 1, + anon_sym_STAR, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(1017), 1, + sym_primary_expression, + STATE(1524), 1, + sym_pattern, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(842), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1005), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(696), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(720), 15, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [33003] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1352), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50216,7 +51174,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1327), 33, + ACTIONS(1354), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50250,10 +51209,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32323] = 3, + [33058] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1329), 13, + ACTIONS(1356), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50267,7 +51226,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1331), 33, + ACTIONS(1358), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50301,10 +51261,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32377] = 3, + [33113] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1333), 13, + ACTIONS(1360), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50318,7 +51278,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1335), 33, + ACTIONS(1362), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50352,10 +51313,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32431] = 3, + [33168] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1337), 13, + ACTIONS(1364), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50369,7 +51330,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1339), 33, + ACTIONS(1366), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50403,10 +51365,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32485] = 3, + [33223] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1341), 13, + ACTIONS(1368), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50420,7 +51382,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1343), 33, + ACTIONS(1370), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50454,10 +51417,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32539] = 3, + [33278] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1345), 13, + ACTIONS(950), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50471,7 +51434,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1347), 33, + ACTIONS(948), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50505,13 +51469,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32593] = 3, + [33333] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1349), 13, + ACTIONS(1374), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50522,7 +51486,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1351), 33, + ACTIONS(1372), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50556,10 +51521,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32647] = 3, + [33388] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1353), 13, + ACTIONS(1376), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50573,7 +51538,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1355), 33, + ACTIONS(1378), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50607,10 +51573,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32701] = 3, + [33443] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1357), 13, + ACTIONS(1380), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50624,7 +51590,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1359), 33, + ACTIONS(1382), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50658,10 +51625,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32755] = 3, + [33498] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1361), 13, + ACTIONS(1233), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50675,7 +51642,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1363), 33, + ACTIONS(1235), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50709,10 +51677,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32809] = 3, + [33553] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1200), 13, + ACTIONS(1384), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50726,7 +51694,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1202), 33, + ACTIONS(1386), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50760,10 +51729,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32863] = 3, + [33608] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(939), 13, + ACTIONS(1388), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50777,7 +51746,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(937), 33, + ACTIONS(1390), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50811,13 +51781,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32917] = 3, + [33663] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1365), 13, + ACTIONS(950), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50828,7 +51798,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1367), 33, + ACTIONS(948), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50862,10 +51833,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32971] = 3, + [33718] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1369), 13, + ACTIONS(1392), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50879,7 +51850,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1371), 33, + ACTIONS(1394), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50913,10 +51885,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33025] = 3, + [33773] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1373), 13, + ACTIONS(1396), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50930,7 +51902,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1375), 33, + ACTIONS(1398), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -50964,10 +51937,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33079] = 3, + [33828] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1377), 13, + ACTIONS(1400), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50981,7 +51954,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1379), 33, + ACTIONS(1402), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51015,13 +51989,65 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33133] = 3, + [33883] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1381), 13, + ACTIONS(1406), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1404), 34, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [33938] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1410), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51032,7 +52058,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1383), 33, + ACTIONS(1408), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51066,10 +52093,62 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33187] = 3, + [33993] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1385), 13, + ACTIONS(1414), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1412), 34, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [34048] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1416), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51083,7 +52162,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1387), 33, + ACTIONS(1418), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51117,10 +52197,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33241] = 3, + [34103] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 13, + ACTIONS(1420), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51134,7 +52214,60 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1391), 33, + ACTIONS(1422), 34, + anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, + anon_sym_print, + anon_sym_assert, + anon_sym_return, + anon_sym_del, + anon_sym_raise, + anon_sym_pass, + anon_sym_break, + anon_sym_continue, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_while, + anon_sym_try, + anon_sym_with, + anon_sym_match, + anon_sym_def, + anon_sym_global, + anon_sym_nonlocal, + anon_sym_exec, + anon_sym_type, + anon_sym_class, + anon_sym_not, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [34158] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1356), 13, + sym__dedent, + sym__string_start, + sym__template_string_start, + anon_sym_LPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1358), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51168,10 +52301,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33295] = 3, + [34213] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1393), 13, + ACTIONS(1424), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51185,7 +52318,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1395), 33, + ACTIONS(1426), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51219,13 +52353,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33349] = 3, + [34268] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1397), 13, + ACTIONS(1364), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51236,7 +52370,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1399), 33, + ACTIONS(1366), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51270,13 +52405,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33403] = 3, + [34323] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1401), 13, + ACTIONS(1384), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51287,7 +52422,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1403), 33, + ACTIONS(1386), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51321,10 +52457,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33457] = 3, + [34378] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1405), 13, + ACTIONS(1428), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51338,7 +52474,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1407), 33, + ACTIONS(1430), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51372,13 +52509,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33511] = 3, + [34433] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1409), 13, + ACTIONS(1243), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51389,7 +52526,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1411), 33, + ACTIONS(1241), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51423,10 +52561,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33565] = 3, + [34488] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1413), 13, + ACTIONS(1406), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51440,7 +52578,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1415), 33, + ACTIONS(1404), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51474,13 +52613,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33619] = 3, + [34543] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1417), 13, + ACTIONS(960), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51491,7 +52630,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1419), 33, + ACTIONS(958), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51525,10 +52665,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33673] = 3, + [34598] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1421), 13, + ACTIONS(1243), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51542,7 +52682,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1423), 33, + ACTIONS(1241), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51576,81 +52717,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33727] = 20, + [34653] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(663), 1, - sym_identifier, - ACTIONS(665), 1, - anon_sym_LPAREN, - ACTIONS(675), 1, - anon_sym_LBRACK, - ACTIONS(677), 1, - anon_sym_await, - ACTIONS(1171), 1, - anon_sym_STAR, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1012), 1, - sym_primary_expression, - STATE(1445), 1, - sym_pattern, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(849), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(999), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(669), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [33815] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1313), 13, - sym__dedent, + ACTIONS(1410), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51661,7 +52734,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1315), 33, + ACTIONS(1408), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51695,10 +52769,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33869] = 3, + [34708] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(979), 13, + ACTIONS(1434), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51712,7 +52786,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(981), 33, + ACTIONS(1432), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51746,10 +52821,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33923] = 3, + [34763] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1427), 13, + ACTIONS(1438), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51763,7 +52838,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1425), 33, + ACTIONS(1436), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51797,10 +52873,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33977] = 3, + [34818] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1431), 13, + ACTIONS(1313), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51814,7 +52890,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1429), 33, + ACTIONS(1315), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51848,10 +52925,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34031] = 3, + [34873] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1435), 13, + ACTIONS(1388), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51865,7 +52942,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1433), 33, + ACTIONS(1390), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51899,10 +52977,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34085] = 3, + [34928] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1439), 13, + ACTIONS(1317), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51916,7 +52994,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1437), 33, + ACTIONS(1319), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -51950,13 +53029,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34139] = 3, + [34983] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1289), 13, - sym__dedent, + ACTIONS(960), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51967,7 +53046,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1291), 33, + ACTIONS(958), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52001,10 +53081,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34193] = 3, + [35038] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1443), 13, + ACTIONS(1321), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52018,7 +53098,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1441), 33, + ACTIONS(1323), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52052,13 +53133,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34247] = 3, + [35093] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1447), 13, - sym__dedent, + ACTIONS(1440), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -52069,7 +53150,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1445), 33, + ACTIONS(1442), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52103,10 +53185,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34301] = 3, + [35148] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1200), 13, + ACTIONS(1344), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52120,7 +53202,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1202), 33, + ACTIONS(1346), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52154,10 +53237,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34355] = 3, + [35203] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(939), 13, + ACTIONS(1348), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52171,7 +53254,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(937), 33, + ACTIONS(1350), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52205,10 +53289,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34409] = 3, + [35258] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1381), 13, + ACTIONS(1360), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52222,7 +53306,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1383), 33, + ACTIONS(1362), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52256,10 +53341,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34463] = 3, + [35313] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1385), 13, + ACTIONS(1368), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52273,7 +53358,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1387), 33, + ACTIONS(1370), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52307,10 +53393,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34517] = 3, + [35368] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1409), 13, + ACTIONS(1376), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52324,7 +53410,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1411), 33, + ACTIONS(1378), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52358,10 +53445,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34571] = 3, + [35423] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1421), 13, + ACTIONS(1233), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52375,7 +53462,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1423), 33, + ACTIONS(1235), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52409,10 +53497,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34625] = 3, + [35478] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1451), 13, + ACTIONS(1392), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52426,7 +53514,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1449), 33, + ACTIONS(1394), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52460,10 +53549,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34679] = 3, + [35533] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1455), 13, + ACTIONS(1400), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52477,7 +53566,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1453), 33, + ACTIONS(1402), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52511,10 +53601,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34733] = 3, + [35588] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1459), 13, + ACTIONS(1416), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52528,7 +53618,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1457), 33, + ACTIONS(1418), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52562,10 +53653,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34787] = 3, + [35643] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1463), 13, + ACTIONS(1420), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52579,7 +53670,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1461), 33, + ACTIONS(1422), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52613,10 +53705,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34841] = 3, + [35698] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1467), 13, + ACTIONS(1424), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52630,7 +53722,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1465), 33, + ACTIONS(1426), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52664,10 +53757,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34895] = 3, + [35753] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1293), 13, + ACTIONS(1440), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52681,7 +53774,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1295), 33, + ACTIONS(1442), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52715,10 +53809,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34949] = 3, + [35808] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1297), 13, + ACTIONS(1446), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52732,7 +53826,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1299), 33, + ACTIONS(1444), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52766,10 +53861,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35003] = 3, + [35863] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1301), 13, + ACTIONS(1450), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52783,7 +53878,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1303), 33, + ACTIONS(1448), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52817,10 +53913,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35057] = 3, + [35918] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1210), 13, + ACTIONS(1454), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52834,7 +53930,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1208), 33, + ACTIONS(1452), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52868,13 +53965,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35111] = 3, + [35973] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1305), 13, - sym__dedent, + ACTIONS(1446), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -52885,7 +53982,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1307), 33, + ACTIONS(1444), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52919,10 +54017,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35165] = 3, + [36028] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1309), 13, + ACTIONS(1458), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52936,7 +54034,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1311), 33, + ACTIONS(1456), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -52970,10 +54069,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35219] = 3, + [36083] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1317), 13, + ACTIONS(1462), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52987,7 +54086,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1319), 33, + ACTIONS(1460), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53021,10 +54121,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35273] = 3, + [36138] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1321), 13, + ACTIONS(1466), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53038,7 +54138,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1323), 33, + ACTIONS(1464), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53072,10 +54173,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35327] = 3, + [36193] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1325), 13, + ACTIONS(1470), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53089,7 +54190,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1327), 33, + ACTIONS(1468), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53123,13 +54225,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35381] = 3, + [36248] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1451), 13, + ACTIONS(1474), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53140,7 +54242,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1449), 33, + ACTIONS(1472), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53174,10 +54277,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35435] = 3, + [36303] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1329), 13, + ACTIONS(1352), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53191,7 +54294,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1331), 33, + ACTIONS(1354), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53225,61 +54329,79 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35489] = 3, + [36358] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1333), 13, - sym__dedent, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, + ACTIONS(694), 1, + sym_identifier, + ACTIONS(698), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(706), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(708), 1, + anon_sym_await, + ACTIONS(1190), 1, + anon_sym_STAR, + STATE(694), 1, + sym_string, + STATE(698), 1, + sym_template_string, + STATE(1002), 1, + sym_pattern, + STATE(1017), 1, + sym_primary_expression, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1335), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, + STATE(842), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1005), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(696), 6, + anon_sym_lazy, anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, anon_sym_exec, anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [35543] = 3, + STATE(720), 15, + sym_binary_operator, + sym_unary_operator, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [36447] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1337), 13, + ACTIONS(1380), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53293,7 +54415,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1339), 33, + ACTIONS(1382), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53327,10 +54450,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35597] = 3, + [36502] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1341), 13, + ACTIONS(1396), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53344,7 +54467,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1343), 33, + ACTIONS(1398), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53378,10 +54502,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35651] = 3, + [36557] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1345), 13, + ACTIONS(1428), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53395,7 +54519,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1347), 33, + ACTIONS(1430), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53429,13 +54554,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35705] = 3, + [36612] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1349), 13, - sym__dedent, + ACTIONS(1414), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53446,7 +54571,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1351), 33, + ACTIONS(1412), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53480,10 +54606,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35759] = 3, + [36667] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1447), 13, + ACTIONS(1450), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -53497,7 +54623,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1445), 33, + ACTIONS(1448), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53531,10 +54658,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35813] = 3, + [36722] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1353), 13, + ACTIONS(1478), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53548,7 +54675,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1355), 33, + ACTIONS(1476), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53582,10 +54710,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35867] = 3, + [36777] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1357), 13, + ACTIONS(1482), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53599,7 +54727,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1359), 33, + ACTIONS(1480), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53633,10 +54762,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35921] = 3, + [36832] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1361), 13, + ACTIONS(1301), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53650,7 +54779,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1363), 33, + ACTIONS(1303), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53684,10 +54814,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35975] = 3, + [36887] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1365), 13, + ACTIONS(1305), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53701,7 +54831,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1367), 33, + ACTIONS(1307), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53735,10 +54866,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36029] = 3, + [36942] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1369), 13, + ACTIONS(1309), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53752,7 +54883,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1371), 33, + ACTIONS(1311), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53786,13 +54918,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36083] = 3, + [36997] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1373), 13, - sym__dedent, + ACTIONS(1454), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53803,7 +54935,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1375), 33, + ACTIONS(1452), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53837,13 +54970,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36137] = 3, + [37052] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1377), 13, - sym__dedent, + ACTIONS(1470), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53854,7 +54987,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1379), 33, + ACTIONS(1468), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53888,13 +55022,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36191] = 3, + [37107] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1455), 13, + ACTIONS(1325), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53905,7 +55039,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1453), 33, + ACTIONS(1327), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53939,13 +55074,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36245] = 3, + [37162] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1459), 13, + ACTIONS(1329), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53956,7 +55091,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1457), 33, + ACTIONS(1331), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -53990,13 +55126,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36299] = 3, + [37217] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1389), 13, - sym__dedent, + ACTIONS(1434), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54007,7 +55143,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1391), 33, + ACTIONS(1432), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54041,13 +55178,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36353] = 3, + [37272] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1393), 13, - sym__dedent, + ACTIONS(1374), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54058,7 +55195,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1395), 33, + ACTIONS(1372), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54092,13 +55230,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36407] = 3, + [37327] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1397), 13, - sym__dedent, + ACTIONS(1478), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54109,7 +55247,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1399), 33, + ACTIONS(1476), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54143,13 +55282,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36461] = 3, + [37382] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1401), 13, - sym__dedent, + ACTIONS(1482), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54160,7 +55299,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1403), 33, + ACTIONS(1480), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54194,13 +55334,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36515] = 3, + [37437] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1405), 13, - sym__dedent, + ACTIONS(1288), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54211,7 +55351,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1407), 33, + ACTIONS(1286), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54245,13 +55386,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36569] = 3, + [37492] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1413), 13, - sym__dedent, + ACTIONS(1458), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54262,7 +55403,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1415), 33, + ACTIONS(1456), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54296,13 +55438,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36623] = 3, + [37547] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1417), 13, - sym__dedent, + ACTIONS(1462), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54313,7 +55455,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1419), 33, + ACTIONS(1460), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54347,10 +55490,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36677] = 3, + [37602] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1463), 13, + ACTIONS(1484), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54364,7 +55507,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1461), 33, + ACTIONS(1486), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54398,10 +55542,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36731] = 3, + [37657] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1467), 13, + ACTIONS(1474), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54415,7 +55559,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1465), 33, + ACTIONS(1472), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54449,10 +55594,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36785] = 3, + [37712] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(979), 13, + ACTIONS(1466), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54466,7 +55611,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(981), 33, + ACTIONS(1464), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54500,61 +55646,65 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36839] = 3, + [37767] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1427), 13, - sym__string_start, - sym__template_string_start, - ts_builtin_sym_end, - anon_sym_LPAREN, + ACTIONS(1265), 1, + anon_sym_COMMA, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1272), 14, + anon_sym_COLON, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1209), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1425), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + anon_sym_in, + anon_sym_LBRACK, anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [36893] = 3, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [37828] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1431), 13, + ACTIONS(1438), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54568,7 +55718,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1429), 33, + ACTIONS(1436), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54602,13 +55753,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36947] = 3, + [37883] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1435), 13, + ACTIONS(1484), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54619,7 +55770,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1433), 33, + ACTIONS(1486), 34, + anon_sym_lazy, anon_sym_import, anon_sym_from, anon_sym_STAR, @@ -54653,110 +55805,166 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37001] = 3, + [37938] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1439), 13, - sym__string_start, - sym__template_string_start, - ts_builtin_sym_end, + ACTIONS(1206), 1, + anon_sym_COMMA, + ACTIONS(1488), 1, + anon_sym_COLON_EQ, + ACTIONS(1213), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1211), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(1204), 14, + anon_sym_DOT, anon_sym_LPAREN, + anon_sym_if, + anon_sym_in, + anon_sym_LBRACK, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + ACTIONS(1209), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1437), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + [38000] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(587), 1, + anon_sym_COMMA, + ACTIONS(590), 1, + anon_sym_COLON_EQ, + ACTIONS(592), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(598), 13, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + ACTIONS(303), 14, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, + anon_sym_in, + anon_sym_LBRACK, anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [37055] = 20, + anon_sym_and, + anon_sym_or, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + ACTIONS(272), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT, + anon_sym_GT, + [38062] = 18, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(663), 1, - sym_identifier, - ACTIONS(665), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(675), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(677), 1, + ACTIONS(1490), 1, + sym_identifier, + ACTIONS(1496), 1, anon_sym_await, - ACTIONS(1171), 1, - anon_sym_STAR, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1005), 1, - sym_pattern, - STATE(1012), 1, + STATE(1017), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(849), 2, + STATE(860), 2, sym_attribute, sym_subscript, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(999), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(306), 4, + ACTIONS(1494), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(669), 5, + ACTIONS(1492), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -54772,108 +55980,115 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37143] = 3, + [38145] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(1443), 13, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(83), 1, sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ts_builtin_sym_end, + ACTIONS(575), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(579), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(581), 1, + anon_sym_await, + ACTIONS(1498), 1, + anon_sym_not, + STATE(772), 1, + sym_template_string, + STATE(779), 1, + sym_string, + STATE(798), 1, + sym_primary_expression, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(1441), 33, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, - anon_sym_del, - anon_sym_raise, - anon_sym_pass, - anon_sym_break, - anon_sym_continue, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_while, - anon_sym_try, - anon_sym_with, - anon_sym_match, - anon_sym_def, - anon_sym_global, - anon_sym_nonlocal, - anon_sym_exec, - anon_sym_type, - anon_sym_class, - anon_sym_not, - anon_sym_lambda, - anon_sym_yield, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 5, sym_integer, sym_identifier, - anon_sym_await, sym_true, sym_false, sym_none, - [37197] = 18, + ACTIONS(573), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(950), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [38222] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(1469), 1, - sym_identifier, - ACTIONS(1475), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(1500), 1, + anon_sym_not, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(1012), 1, + STATE(821), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(834), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(1471), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(306), 4, + ACTIONS(311), 5, sym_integer, + sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(1473), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 15, + STATE(720), 17, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -54887,49 +56102,50 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37279] = 16, + [38299] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(1477), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + ACTIONS(1502), 1, anon_sym_not, - STATE(621), 1, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(738), 1, + STATE(810), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -54947,147 +56163,111 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37355] = 5, + [38376] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(310), 1, - sym__string_start, - STATE(619), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1481), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1479), 33, - anon_sym_DOT, + ACTIONS(650), 1, anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(656), 1, anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [37409] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(312), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, + anon_sym_await, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, sym__template_string_start, - STATE(620), 2, + ACTIONS(1504), 1, + anon_sym_not, + STATE(790), 1, + sym_string, + STATE(791), 1, sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1485), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1483), 33, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, + STATE(856), 1, + sym_primary_expression, + ACTIONS(660), 2, + sym_ellipsis, + sym_float, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [37463] = 16, + anon_sym_TILDE, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(648), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(985), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [38453] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(610), 1, anon_sym_await, - ACTIONS(1487), 1, + ACTIONS(1506), 1, anon_sym_not, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + STATE(694), 1, sym_string, - STATE(800), 1, + STATE(698), 1, + sym_template_string, + STATE(764), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55105,196 +56285,50 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37539] = 5, + [38530] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(1493), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, - STATE(619), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1491), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1489), 33, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [37593] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1500), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(620), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1498), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1496), 33, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [37647] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(310), 1, - sym__string_start, - STATE(616), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1178), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1173), 33, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [37701] = 16, - ACTIONS(3), 1, - sym_comment, - ACTIONS(631), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(641), 1, - anon_sym_LBRACE, - ACTIONS(645), 1, + ACTIONS(600), 1, anon_sym_await, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1503), 1, + ACTIONS(1508), 1, anon_sym_not, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(831), 1, + STATE(757), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55312,49 +56346,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37777] = 16, + [38607] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(1505), 1, - anon_sym_not, - STATE(767), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(788), 1, + STATE(745), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55372,22 +56405,22 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37853] = 5, + [38681] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(312), 1, + ACTIONS(1514), 1, sym__template_string_start, - STATE(617), 2, + STATE(627), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1178), 6, + ACTIONS(1512), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 33, + ACTIONS(1510), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -55421,49 +56454,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [37907] = 16, + [38735] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - ACTIONS(1507), 1, - anon_sym_not, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(752), 1, + STATE(833), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55481,49 +56513,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [37983] = 16, + [38809] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - ACTIONS(1509), 1, - anon_sym_not, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(814), 1, + STATE(864), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55541,47 +56572,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38059] = 15, + [38883] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(645), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(647), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(794), 1, + STATE(781), 1, sym_string, - STATE(795), 1, + STATE(782), 1, sym_template_string, - STATE(843), 1, + STATE(813), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55599,47 +56631,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38132] = 15, + [38957] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(736), 1, + STATE(863), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55657,51 +56690,54 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38205] = 15, + [39031] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(1490), 1, + sym_identifier, + ACTIONS(1496), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(737), 1, + STATE(1017), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + STATE(860), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(1492), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -55715,47 +56751,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38278] = 15, + [39109] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(738), 1, + STATE(868), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55773,47 +56810,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38351] = 15, + [39183] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(748), 1, + STATE(779), 1, + sym_string, + STATE(797), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55831,47 +56869,107 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38424] = 15, + [39257] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(650), 1, + anon_sym_LPAREN, + ACTIONS(656), 1, + anon_sym_LBRACK, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(662), 1, + anon_sym_await, + ACTIONS(664), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(597), 1, + STATE(790), 1, + sym_string, + STATE(791), 1, + sym_template_string, + STATE(865), 1, + sym_primary_expression, + ACTIONS(660), 2, + sym_ellipsis, + sym_float, + ACTIONS(654), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(646), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(648), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(985), 17, + sym_binary_operator, + sym_unary_operator, + sym_attribute, + sym_subscript, + sym_call, + sym_list, + sym_set, + sym_tuple, + sym_dictionary, + sym_list_comprehension, + sym_dictionary_comprehension, + sym_set_comprehension, + sym_generator_expression, + sym_parenthesized_expression, + sym_concatenated_string, + sym_concatenated_template_string, + sym_await, + [39331] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(749), 1, + STATE(814), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55889,47 +56987,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38497] = 15, + [39405] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(804), 1, + STATE(798), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -55947,47 +57046,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38570] = 15, + [39479] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(83), 1, - sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(781), 1, sym_string, - STATE(805), 1, + STATE(782), 1, + sym_template_string, + STATE(815), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56005,51 +57105,54 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38643] = 15, + [39553] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(1517), 1, + sym_identifier, + ACTIONS(1521), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + STATE(694), 1, sym_string, - STATE(796), 1, + STATE(698), 1, + sym_template_string, + STATE(1017), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + STATE(1013), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(311), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(1519), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(720), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -56063,47 +57166,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38716] = 15, + [39631] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(763), 1, + STATE(772), 1, sym_template_string, - STATE(782), 1, + STATE(779), 1, sym_string, - STATE(799), 1, + STATE(801), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56121,47 +57225,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38789] = 15, + [39705] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(645), 1, + ACTIONS(662), 1, anon_sym_await, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - STATE(794), 1, + STATE(790), 1, sym_string, - STATE(795), 1, + STATE(791), 1, sym_template_string, - STATE(828), 1, + STATE(845), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56179,47 +57284,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38862] = 15, + [39779] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(645), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(647), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(794), 1, + STATE(781), 1, sym_string, - STATE(795), 1, + STATE(782), 1, sym_template_string, - STATE(829), 1, + STATE(804), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56237,47 +57343,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38935] = 15, + [39853] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(794), 1, - sym_string, - STATE(795), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(772), 1, sym_template_string, - STATE(831), 1, + STATE(779), 1, + sym_string, + STATE(818), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56295,47 +57402,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39008] = 15, + [39927] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(794), 1, - sym_string, - STATE(795), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(772), 1, sym_template_string, - STATE(832), 1, + STATE(779), 1, + sym_string, + STATE(796), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56353,47 +57461,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39081] = 15, + [40001] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(794), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(833), 1, + STATE(751), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56411,47 +57520,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39154] = 15, + [40075] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(794), 1, - sym_string, - STATE(795), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(772), 1, sym_template_string, - STATE(835), 1, + STATE(779), 1, + sym_string, + STATE(803), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56469,47 +57579,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39227] = 15, + [40149] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(794), 1, - sym_string, - STATE(795), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(772), 1, sym_template_string, - STATE(836), 1, + STATE(779), 1, + sym_string, + STATE(788), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56527,47 +57638,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39300] = 15, + [40223] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(794), 1, - sym_string, - STATE(795), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(772), 1, sym_template_string, - STATE(837), 1, + STATE(779), 1, + sym_string, + STATE(800), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56585,47 +57697,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39373] = 15, + [40297] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(631), 1, - anon_sym_LPAREN, - ACTIONS(639), 1, - anon_sym_LBRACK, - ACTIONS(641), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(645), 1, - anon_sym_await, - ACTIONS(647), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(794), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(844), 1, + STATE(752), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56643,47 +57756,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39446] = 15, + [40371] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(767), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(786), 1, + STATE(764), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56701,47 +57815,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39519] = 15, + [40445] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(623), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(625), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(767), 1, + STATE(781), 1, sym_string, - STATE(768), 1, + STATE(782), 1, sym_template_string, - STATE(787), 1, + STATE(816), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56759,47 +57874,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39592] = 15, + [40519] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(623), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(625), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(767), 1, + STATE(781), 1, sym_string, - STATE(768), 1, + STATE(782), 1, sym_template_string, - STATE(788), 1, + STATE(817), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56817,47 +57933,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39665] = 15, + [40593] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(767), 1, - sym_string, - STATE(768), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(772), 1, sym_template_string, - STATE(789), 1, + STATE(779), 1, + sym_string, + STATE(806), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56875,47 +57992,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39738] = 15, + [40667] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(743), 1, + STATE(742), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56933,47 +58051,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39811] = 15, + [40741] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(767), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(791), 1, + STATE(743), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56991,47 +58110,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39884] = 15, + [40815] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(767), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(792), 1, + STATE(744), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57049,47 +58169,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39957] = 15, + [40889] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(623), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(625), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(767), 1, + STATE(781), 1, sym_string, - STATE(768), 1, + STATE(782), 1, sym_template_string, - STATE(793), 1, + STATE(830), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57107,47 +58228,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40030] = 15, + [40963] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(739), 1, + STATE(867), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57165,47 +58287,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40103] = 15, + [41037] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, - anon_sym_LPAREN, - ACTIONS(617), 1, - anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(767), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(797), 1, + STATE(746), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57223,47 +58346,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40176] = 15, + [41111] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(658), 1, anon_sym_LBRACE, - ACTIONS(623), 1, + ACTIONS(662), 1, anon_sym_await, - ACTIONS(625), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(666), 1, sym__template_string_start, - STATE(767), 1, + STATE(790), 1, sym_string, - STATE(768), 1, + STATE(791), 1, sym_template_string, - STATE(798), 1, + STATE(866), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57281,47 +58405,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40249] = 15, + [41185] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(759), 1, + STATE(819), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57339,105 +58464,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40322] = 15, + [41259] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + STATE(694), 1, sym_string, - STATE(823), 1, - sym_primary_expression, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(47), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(570), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(908), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [40395] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(83), 1, - sym__template_string_start, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - ACTIONS(576), 1, - anon_sym_await, - STATE(763), 1, + STATE(698), 1, sym_template_string, - STATE(782), 1, - sym_string, - STATE(824), 1, + STATE(820), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57455,47 +58523,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40468] = 15, + [41333] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(740), 1, + STATE(821), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57513,47 +58582,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40541] = 15, + [41407] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + STATE(694), 1, sym_string, - STATE(800), 1, + STATE(698), 1, + sym_template_string, + STATE(823), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57571,107 +58641,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40614] = 17, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(1469), 1, - sym_identifier, - ACTIONS(1475), 1, - anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1012), 1, - sym_primary_expression, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(834), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(1473), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [40691] = 15, + [41481] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(750), 1, + STATE(824), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57689,47 +58700,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40764] = 15, + [41555] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(751), 1, + STATE(825), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57747,47 +58759,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40837] = 15, + [41629] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(752), 1, + STATE(826), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57805,47 +58818,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40910] = 15, + [41703] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(753), 1, + STATE(779), 1, + sym_string, + STATE(802), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57863,47 +58877,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40983] = 15, + [41777] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(734), 1, + STATE(740), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57921,47 +58936,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41056] = 15, + [41851] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(754), 1, + STATE(827), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57979,47 +58995,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41129] = 15, + [41925] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(755), 1, + STATE(828), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58037,47 +59054,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41202] = 15, + [41999] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(756), 1, + STATE(809), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58095,47 +59113,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41275] = 15, + [42073] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(636), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(642), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(644), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(741), 1, + STATE(829), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58153,47 +59172,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41348] = 15, + [42147] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + STATE(694), 1, sym_string, - STATE(801), 1, + STATE(698), 1, + sym_template_string, + STATE(755), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58211,47 +59231,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41421] = 15, + [42221] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(757), 1, + STATE(741), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58269,47 +59290,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41494] = 15, + [42295] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(758), 1, + STATE(756), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58327,47 +59349,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41567] = 15, + [42369] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(578), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(591), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(595), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(761), 1, + STATE(757), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(296), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58385,105 +59408,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41640] = 15, + [42443] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, - anon_sym_LPAREN, - ACTIONS(574), 1, - anon_sym_LBRACK, - ACTIONS(576), 1, - anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, - sym_string, - STATE(811), 1, - sym_primary_expression, - ACTIONS(75), 2, - sym_ellipsis, - sym_float, - ACTIONS(47), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(77), 5, - sym_integer, - sym_identifier, - sym_true, - sym_false, - sym_none, - ACTIONS(570), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(908), 17, - sym_binary_operator, - sym_unary_operator, - sym_attribute, - sym_subscript, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [41713] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(631), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(639), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(641), 1, - anon_sym_LBRACE, - ACTIONS(645), 1, + ACTIONS(600), 1, anon_sym_await, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - STATE(794), 1, + STATE(694), 1, sym_string, - STATE(795), 1, + STATE(698), 1, sym_template_string, - STATE(845), 1, + STATE(739), 1, sym_primary_expression, - ACTIONS(643), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(637), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(629), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(633), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(953), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58501,107 +59467,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41786] = 17, - ACTIONS(3), 1, - sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(578), 1, - anon_sym_LPAREN, - ACTIONS(591), 1, - anon_sym_LBRACK, - ACTIONS(1511), 1, - sym_identifier, - ACTIONS(1515), 1, - anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, - sym_template_string, - STATE(1012), 1, - sym_primary_expression, - ACTIONS(304), 2, - sym_ellipsis, - sym_float, - STATE(1000), 2, - sym_attribute, - sym_subscript, - ACTIONS(296), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(306), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(1513), 5, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(724), 15, - sym_binary_operator, - sym_unary_operator, - sym_call, - sym_list, - sym_set, - sym_tuple, - sym_dictionary, - sym_list_comprehension, - sym_dictionary_comprehension, - sym_set_comprehension, - sym_generator_expression, - sym_parenthesized_expression, - sym_concatenated_string, - sym_concatenated_template_string, - sym_await, - [41863] = 15, + [42517] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(617), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(619), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(623), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(625), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(767), 1, + STATE(781), 1, sym_string, - STATE(768), 1, + STATE(782), 1, sym_template_string, - STATE(784), 1, + STATE(811), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58619,47 +59526,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41936] = 15, + [42591] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(81), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(83), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + STATE(694), 1, sym_string, - STATE(802), 1, + STATE(698), 1, + sym_template_string, + STATE(758), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58677,47 +59585,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42009] = 15, + [42665] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(812), 1, + STATE(759), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58735,47 +59644,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42082] = 15, + [42739] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(813), 1, + STATE(760), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58793,47 +59703,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42155] = 15, + [42813] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(814), 1, + STATE(761), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58851,47 +59762,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42228] = 15, + [42887] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(815), 1, + STATE(862), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58909,47 +59821,97 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42301] = 15, + [42961] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(1527), 1, + sym__string_start, + STATE(685), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1525), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1523), 33, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [43015] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(816), 1, + STATE(762), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58967,47 +59929,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42374] = 15, + [43089] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(817), 1, + STATE(763), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59025,47 +59988,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42447] = 15, + [43163] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(818), 1, + STATE(765), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59083,47 +60047,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42520] = 15, + [43237] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(819), 1, + STATE(812), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59141,47 +60106,97 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42593] = 15, + [43311] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(315), 1, + sym__string_start, + STATE(685), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1532), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1530), 33, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [43365] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(597), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(603), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(605), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(621), 1, - sym_string, - STATE(624), 1, + STATE(772), 1, sym_template_string, - STATE(742), 1, + STATE(779), 1, + sym_string, + STATE(807), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(601), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(573), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(950), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59199,47 +60214,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42666] = 15, + [43439] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(310), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(621), 1, + STATE(694), 1, sym_string, - STATE(624), 1, + STATE(698), 1, sym_template_string, - STATE(820), 1, + STATE(748), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59257,47 +60273,146 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42739] = 15, + [43513] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(653), 1, + STATE(627), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1536), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1534), 33, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(659), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(661), 1, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [43567] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(315), 1, + sym__string_start, + STATE(690), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1209), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 33, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [43621] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(781), 1, sym_string, - STATE(624), 1, + STATE(782), 1, sym_template_string, - STATE(821), 1, + STATE(810), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(614), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(949), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59315,47 +60430,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42812] = 15, + [43695] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(288), 1, - anon_sym_LBRACE, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(653), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(659), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(661), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - STATE(621), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(624), 1, + STATE(791), 1, sym_template_string, - STATE(803), 1, + STATE(856), 1, sym_primary_expression, - ACTIONS(304), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(657), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(306), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(724), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59373,47 +60489,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42885] = 15, + [43769] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(51), 1, - anon_sym_LBRACE, - ACTIONS(81), 1, - sym__string_start, - ACTIONS(83), 1, - sym__template_string_start, - ACTIONS(568), 1, + ACTIONS(650), 1, anon_sym_LPAREN, - ACTIONS(574), 1, + ACTIONS(656), 1, anon_sym_LBRACK, - ACTIONS(576), 1, + ACTIONS(658), 1, + anon_sym_LBRACE, + ACTIONS(662), 1, anon_sym_await, - STATE(763), 1, - sym_template_string, - STATE(782), 1, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + STATE(790), 1, sym_string, - STATE(825), 1, + STATE(791), 1, + sym_template_string, + STATE(844), 1, sym_primary_expression, - ACTIONS(75), 2, + ACTIONS(660), 2, sym_ellipsis, sym_float, - ACTIONS(47), 3, + ACTIONS(654), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(77), 5, + ACTIONS(646), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(570), 5, + ACTIONS(648), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(908), 17, + STATE(985), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59431,47 +60548,97 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42958] = 15, + [43843] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(609), 1, + ACTIONS(317), 1, + sym__template_string_start, + STATE(693), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1209), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 33, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(617), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(619), 1, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [43897] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(623), 1, - anon_sym_await, - ACTIONS(625), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(627), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(767), 1, + ACTIONS(636), 1, + anon_sym_LPAREN, + ACTIONS(642), 1, + anon_sym_LBRACK, + ACTIONS(644), 1, + anon_sym_await, + STATE(694), 1, sym_string, - STATE(768), 1, + STATE(698), 1, sym_template_string, - STATE(783), 1, + STATE(822), 1, sym_primary_expression, - ACTIONS(621), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(615), 3, + ACTIONS(640), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(607), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(611), 5, + ACTIONS(583), 6, + anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(924), 17, + STATE(720), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59489,18 +60656,18 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43031] = 3, + [43971] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1519), 6, + ACTIONS(1540), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1517), 34, - sym__string_start, + ACTIONS(1538), 34, + sym__template_string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59534,17 +60701,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43079] = 3, + [44019] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1523), 6, + ACTIONS(1544), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1521), 34, + ACTIONS(1542), 34, sym__template_string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -59579,17 +60746,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43127] = 3, + [44067] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1527), 6, + ACTIONS(1548), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1525), 34, + ACTIONS(1546), 34, sym__string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -59624,18 +60791,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43175] = 3, + [44115] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1531), 6, + ACTIONS(1552), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1529), 34, - sym__template_string_start, + ACTIONS(1550), 34, + sym__string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59669,17 +60836,139 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43223] = 3, + [44163] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1566), 1, + anon_sym_PIPE, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1572), 1, + anon_sym_STAR_STAR, + ACTIONS(1574), 1, + anon_sym_EQ, + ACTIONS(1578), 1, + anon_sym_not, + ACTIONS(1580), 1, + anon_sym_AMP, + ACTIONS(1582), 1, + anon_sym_CARET, + ACTIONS(1586), 1, + anon_sym_is, + STATE(997), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1560), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1562), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1568), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1584), 2, + anon_sym_LT, + anon_sym_GT, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1576), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1564), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1558), 9, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [44244] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1574), 1, + anon_sym_as, + ACTIONS(1594), 1, + anon_sym_PIPE, + ACTIONS(1598), 1, + anon_sym_STAR_STAR, + ACTIONS(1602), 1, + anon_sym_not, + ACTIONS(1604), 1, + anon_sym_AMP, + ACTIONS(1606), 1, + anon_sym_CARET, + ACTIONS(1610), 1, + anon_sym_is, + STATE(998), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1588), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1590), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1596), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1608), 2, + anon_sym_LT, + anon_sym_GT, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1600), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1592), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1558), 9, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [44325] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1535), 6, + ACTIONS(272), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1533), 33, + ACTIONS(303), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59713,17 +61002,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43270] = 3, + [44372] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1539), 6, + ACTIONS(1614), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1537), 33, + ACTIONS(1612), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59757,17 +61046,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43317] = 3, + [44419] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 6, + ACTIONS(1618), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 33, + ACTIONS(1616), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59801,17 +61090,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43364] = 3, + [44466] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1547), 6, + ACTIONS(1622), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1545), 33, + ACTIONS(1620), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59845,17 +61134,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43411] = 3, + [44513] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1551), 6, + ACTIONS(1626), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1549), 33, + ACTIONS(1624), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59889,17 +61178,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43458] = 3, + [44560] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 6, + ACTIONS(1630), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 33, + ACTIONS(1628), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59933,17 +61222,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43505] = 3, + [44607] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1555), 6, + ACTIONS(1634), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1553), 33, + ACTIONS(1632), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -59977,17 +61266,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43552] = 3, + [44654] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1559), 6, + ACTIONS(1638), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1557), 33, + ACTIONS(1636), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60021,17 +61310,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43599] = 3, + [44701] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1563), 6, + ACTIONS(1642), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 33, + ACTIONS(1640), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60065,17 +61354,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43646] = 3, + [44748] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1567), 6, + ACTIONS(1646), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1565), 33, + ACTIONS(1644), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60109,17 +61398,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43693] = 3, + [44795] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1571), 6, + ACTIONS(1650), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1569), 33, + ACTIONS(1648), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60153,17 +61442,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43740] = 3, + [44842] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1575), 6, + ACTIONS(1654), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1573), 33, + ACTIONS(1652), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60197,17 +61486,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43787] = 3, + [44889] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 6, + ACTIONS(1658), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 33, + ACTIONS(1656), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60241,23 +61530,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43834] = 3, + [44936] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 6, + ACTIONS(1662), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1267), 33, + ACTIONS(1660), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_in, @@ -60283,25 +61574,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [43881] = 3, + [44983] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1283), 6, + ACTIONS(1209), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1278), 33, + ACTIONS(1204), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_in, @@ -60327,19 +61618,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [43928] = 3, + [45030] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 6, + ACTIONS(1666), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 33, + ACTIONS(1664), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60373,17 +61662,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [43975] = 3, + [45077] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1587), 6, + ACTIONS(1670), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1585), 33, + ACTIONS(1668), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60417,17 +61706,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44022] = 3, + [45124] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1591), 6, + ACTIONS(1674), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1589), 33, + ACTIONS(1672), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60461,17 +61750,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44069] = 3, + [45171] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 6, + ACTIONS(1678), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 33, + ACTIONS(1676), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60505,17 +61794,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44116] = 3, + [45218] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 6, + ACTIONS(1682), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 33, + ACTIONS(1680), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60549,78 +61838,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44163] = 20, + [45265] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1605), 1, - anon_sym_PIPE, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1611), 1, - anon_sym_STAR_STAR, - ACTIONS(1613), 1, - anon_sym_EQ, - ACTIONS(1617), 1, - anon_sym_not, - ACTIONS(1619), 1, - anon_sym_AMP, - ACTIONS(1621), 1, - anon_sym_CARET, - ACTIONS(1625), 1, - anon_sym_is, - STATE(991), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1599), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1601), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1607), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1623), 2, - anon_sym_LT, - anon_sym_GT, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1615), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1603), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1597), 9, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_and, - anon_sym_or, - [44244] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1629), 6, + ACTIONS(1686), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1627), 33, + ACTIONS(1684), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60654,17 +61882,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44291] = 3, + [45312] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1633), 6, + ACTIONS(1690), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1631), 33, + ACTIONS(1688), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60698,17 +61926,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44338] = 3, + [45359] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1637), 6, + ACTIONS(1690), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1635), 33, + ACTIONS(1688), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60742,17 +61970,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44385] = 3, + [45406] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(265), 6, + ACTIONS(1694), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 33, + ACTIONS(1692), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60786,17 +62014,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44432] = 3, + [45453] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 6, + ACTIONS(1698), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 33, + ACTIONS(1696), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60830,78 +62058,61 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44479] = 20, + [45500] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1613), 1, + ACTIONS(1690), 6, anon_sym_as, - ACTIONS(1645), 1, - anon_sym_PIPE, - ACTIONS(1649), 1, - anon_sym_STAR_STAR, - ACTIONS(1653), 1, - anon_sym_not, - ACTIONS(1655), 1, - anon_sym_AMP, - ACTIONS(1657), 1, - anon_sym_CARET, - ACTIONS(1661), 1, - anon_sym_is, - STATE(992), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1639), 2, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, - ACTIONS(1641), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1647), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1659), 2, anon_sym_LT, anon_sym_GT, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1651), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1643), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1597), 9, + ACTIONS(1688), 33, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_else, anon_sym_async, anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, anon_sym_and, anon_sym_or, - [44560] = 3, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [45547] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1665), 6, + ACTIONS(1702), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1663), 33, + ACTIONS(1700), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60935,17 +62146,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44607] = 3, + [45594] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1669), 6, + ACTIONS(1702), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1667), 33, + ACTIONS(1700), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60979,17 +62190,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44654] = 3, + [45641] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 6, + ACTIONS(1706), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 33, + ACTIONS(1704), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61023,17 +62234,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44701] = 3, + [45688] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1677), 6, + ACTIONS(1702), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1675), 33, + ACTIONS(1700), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61067,25 +62278,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44748] = 3, + [45735] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1681), 6, + ACTIONS(1338), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1679), 33, + ACTIONS(1333), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_in, @@ -61111,25 +62320,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44795] = 3, + anon_sym_COLON2, + sym_type_conversion, + [45782] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 6, + ACTIONS(1295), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 33, + ACTIONS(1290), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_else, anon_sym_async, anon_sym_for, anon_sym_in, @@ -61155,17 +62364,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44842] = 3, + anon_sym_COLON2, + sym_type_conversion, + [45829] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1685), 6, + ACTIONS(1710), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1683), 33, + ACTIONS(1708), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61199,225 +62410,250 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44889] = 3, + [45876] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1689), 6, - anon_sym_as, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1572), 1, + anon_sym_STAR_STAR, + ACTIONS(1580), 1, + anon_sym_AMP, + ACTIONS(1582), 1, + anon_sym_CARET, + ACTIONS(1560), 2, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, + ACTIONS(1562), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1568), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1576), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1714), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1687), 33, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1712), 18, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_else, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44936] = 10, + [45944] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1594), 1, + anon_sym_PIPE, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - ACTIONS(1599), 2, + ACTIONS(1604), 1, + anon_sym_AMP, + ACTIONS(1606), 1, + anon_sym_CARET, + ACTIONS(1588), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(733), 2, + ACTIONS(1590), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1596), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1600), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, - anon_sym_EQ, + ACTIONS(1718), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 24, + ACTIONS(1716), 17, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44996] = 8, + [46014] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1594), 1, + anon_sym_PIPE, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1697), 5, + ACTIONS(1604), 1, + anon_sym_AMP, + ACTIONS(1606), 1, + anon_sym_CARET, + ACTIONS(1588), 2, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, + ACTIONS(1590), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1596), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1600), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1722), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1695), 27, + ACTIONS(1720), 17, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45052] = 8, + [46084] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - STATE(733), 2, + ACTIONS(1604), 1, + anon_sym_AMP, + ACTIONS(1606), 1, + anon_sym_CARET, + ACTIONS(1588), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1590), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1596), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(1600), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1714), 3, anon_sym_as, - anon_sym_STAR, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 27, + ACTIONS(1712), 18, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45108] = 11, + [46152] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - ACTIONS(1639), 2, + ACTIONS(1588), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1647), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1651), 3, + ACTIONS(1600), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 22, + ACTIONS(1712), 24, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -61426,6 +62662,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, @@ -61440,97 +62678,88 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45170] = 15, + [46212] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1645), 1, - anon_sym_PIPE, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - ACTIONS(1655), 1, - anon_sym_AMP, - ACTIONS(1657), 1, - anon_sym_CARET, - ACTIONS(1639), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1641), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1647), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1651), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1701), 3, + ACTIONS(1714), 5, anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1699), 17, + ACTIONS(1712), 27, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45240] = 14, + [46268] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - ACTIONS(1655), 1, - anon_sym_AMP, - ACTIONS(1657), 1, + ACTIONS(1606), 1, anon_sym_CARET, - ACTIONS(1639), 2, + ACTIONS(1588), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1641), 2, + ACTIONS(1590), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1647), 2, + ACTIONS(1596), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1651), 3, + ACTIONS(1600), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 18, + ACTIONS(1712), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -61543,48 +62772,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45308] = 10, + [46334] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - ACTIONS(1639), 2, + ACTIONS(1588), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(733), 2, + ACTIONS(1590), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1596), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1651), 3, + ACTIONS(1600), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 24, + ACTIONS(1712), 20, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, @@ -61592,34 +62825,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_or, anon_sym_AMP, anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45368] = 8, + [46398] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(1726), 5, anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 27, + ACTIONS(1724), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -61647,125 +62879,113 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45424] = 13, + [46454] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - ACTIONS(1657), 1, - anon_sym_CARET, - ACTIONS(1639), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1641), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1647), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1651), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1730), 5, anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 19, + ACTIONS(1728), 27, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45490] = 12, + [46510] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1649), 1, - anon_sym_STAR_STAR, - ACTIONS(1639), 2, + ACTIONS(664), 1, + sym__string_start, + STATE(753), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1532), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1641), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1647), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1651), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, - anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 20, + ACTIONS(1530), 31, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45554] = 5, + [46560] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - STATE(746), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1481), 4, + ACTIONS(666), 1, + sym__template_string_start, + STATE(754), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1536), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1479), 31, + ACTIONS(1534), 31, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61797,36 +63017,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45604] = 5, + [46610] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(649), 1, - sym__template_string_start, - STATE(747), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1485), 4, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1598), 1, + anon_sym_STAR_STAR, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 5, + anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1483), 31, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1712), 27, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -61842,42 +63065,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45654] = 5, + [46666] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1703), 1, - sym__string_start, - STATE(746), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1491), 4, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1598), 1, + anon_sym_STAR_STAR, + ACTIONS(1588), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1596), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1600), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1714), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1489), 31, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1712), 22, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -61887,20 +63116,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45704] = 5, + [46728] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1706), 1, - sym__template_string_start, - STATE(747), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1498), 4, + ACTIONS(1732), 1, + sym__string_start, + STATE(753), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1525), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1496), 31, + ACTIONS(1523), 31, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61932,137 +63161,72 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45754] = 15, + [46778] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1645), 1, - anon_sym_PIPE, - ACTIONS(1649), 1, - anon_sym_STAR_STAR, - ACTIONS(1655), 1, - anon_sym_AMP, - ACTIONS(1657), 1, - anon_sym_CARET, - ACTIONS(1639), 2, + ACTIONS(1735), 1, + sym__template_string_start, + STATE(754), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1512), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1641), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1647), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1651), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1711), 3, - anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1709), 17, + ACTIONS(1510), 31, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, anon_sym_in, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [45824] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1645), 1, anon_sym_PIPE, - ACTIONS(1649), 1, - anon_sym_STAR_STAR, - ACTIONS(1655), 1, - anon_sym_AMP, - ACTIONS(1657), 1, - anon_sym_CARET, - ACTIONS(1639), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1641), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1647), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1651), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1715), 3, - anon_sym_as, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1713), 17, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, + anon_sym_LBRACK, anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45894] = 8, + [46828] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(1714), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 27, + ACTIONS(1712), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -62090,35 +63254,35 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45950] = 11, + [46884] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1607), 2, + ACTIONS(1568), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 22, + ACTIONS(1712), 22, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -62141,44 +63305,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46012] = 15, + [46946] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1605), 1, + ACTIONS(1566), 1, anon_sym_PIPE, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1619), 1, + ACTIONS(1580), 1, anon_sym_AMP, - ACTIONS(1621), 1, + ACTIONS(1582), 1, anon_sym_CARET, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1601), 2, + ACTIONS(1562), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1607), 2, + ACTIONS(1568), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1701), 3, + ACTIONS(1740), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1699), 17, + ACTIONS(1738), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62196,81 +63360,77 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46082] = 14, + [47016] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1619), 1, - anon_sym_AMP, - ACTIONS(1621), 1, - anon_sym_CARET, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1601), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1607), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 18, + ACTIONS(1712), 24, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_else, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46150] = 8, + [47076] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(1714), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 27, + ACTIONS(1712), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -62298,40 +63458,40 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46206] = 13, + [47132] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1621), 1, + ACTIONS(1582), 1, anon_sym_CARET, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1601), 2, + ACTIONS(1562), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1607), 2, + ACTIONS(1568), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 19, + ACTIONS(1712), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62351,38 +63511,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46272] = 12, + [47198] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1601), 2, + ACTIONS(1562), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1607), 2, + ACTIONS(1568), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 20, + ACTIONS(1712), 20, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62403,44 +63563,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46336] = 15, + [47262] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1605), 1, + ACTIONS(1566), 1, anon_sym_PIPE, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1619), 1, + ACTIONS(1580), 1, anon_sym_AMP, - ACTIONS(1621), 1, + ACTIONS(1582), 1, anon_sym_CARET, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1601), 2, + ACTIONS(1562), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1607), 2, + ACTIONS(1568), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1711), 3, + ACTIONS(1718), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1709), 17, + ACTIONS(1716), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62458,44 +63618,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46406] = 15, + [47332] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1605), 1, + ACTIONS(1566), 1, anon_sym_PIPE, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - ACTIONS(1619), 1, + ACTIONS(1580), 1, anon_sym_AMP, - ACTIONS(1621), 1, + ACTIONS(1582), 1, anon_sym_CARET, - ACTIONS(1599), 2, + ACTIONS(1560), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1601), 2, + ACTIONS(1562), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1607), 2, + ACTIONS(1568), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1615), 3, + ACTIONS(1576), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1715), 3, + ACTIONS(1722), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1713), 17, + ACTIONS(1720), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62513,123 +63673,82 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46476] = 8, + [47402] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1649), 1, + ACTIONS(1594), 1, + anon_sym_PIPE, + ACTIONS(1598), 1, anon_sym_STAR_STAR, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1719), 5, - anon_sym_as, + ACTIONS(1604), 1, + anon_sym_AMP, + ACTIONS(1606), 1, + anon_sym_CARET, + ACTIONS(1588), 2, anon_sym_STAR, anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1717), 27, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(1590), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1596), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_RBRACK, - anon_sym_RBRACE, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1600), 3, anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [46532] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1649), 1, - anon_sym_STAR_STAR, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1697), 5, + ACTIONS(1740), 3, anon_sym_as, - anon_sym_STAR, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1695), 27, + ACTIONS(1738), 17, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46588] = 8, + [47472] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1611), 1, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1719), 5, + ACTIONS(1730), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1717), 27, + ACTIONS(1728), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -62657,78 +63776,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46644] = 5, + [47528] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1721), 1, - sym__template_string_start, - STATE(762), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1498), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1496), 29, + ACTIONS(1554), 1, anon_sym_DOT, + ACTIONS(1556), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1570), 1, anon_sym_LBRACK, - anon_sym_RBRACE, + ACTIONS(1572), 1, anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [46693] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(83), 1, - sym__template_string_start, - STATE(778), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1178), 5, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, + ACTIONS(1724), 27, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -62744,17 +63824,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [46742] = 3, + [47584] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1283), 5, + ACTIONS(1338), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1278), 32, + ACTIONS(1333), 32, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62787,124 +63866,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46787] = 5, + [47629] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(81), 1, + ACTIONS(1742), 1, sym__string_start, - STATE(775), 2, + STATE(768), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1481), 5, + ACTIONS(1525), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1479), 29, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [46836] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1613), 1, - anon_sym_EQ, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1734), 1, - anon_sym_PIPE, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - ACTIONS(1744), 1, - anon_sym_not, - ACTIONS(1746), 1, - anon_sym_AMP, - ACTIONS(1748), 1, - anon_sym_CARET, - ACTIONS(1752), 1, - anon_sym_is, - STATE(1006), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1728), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1730), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1736), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1750), 2, - anon_sym_LT, - anon_sym_GT, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1742), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1732), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1597), 7, - anon_sym_COMMA, - anon_sym_if, - anon_sym_RBRACE, - anon_sym_and, - anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [46915] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(625), 1, - sym__string_start, - STATE(769), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1178), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1523), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -62934,21 +63910,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [46964] = 5, + [47678] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(627), 1, + ACTIONS(1745), 1, sym__template_string_start, - STATE(770), 2, + STATE(769), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1178), 5, + ACTIONS(1512), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1510), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -62978,22 +63954,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [47013] = 5, + [47727] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(625), 1, + ACTIONS(83), 1, sym__string_start, - STATE(771), 2, + STATE(776), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1481), 5, + ACTIONS(1532), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1479), 29, + ACTIONS(1530), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -63003,7 +63981,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -63020,24 +63997,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [47062] = 5, + anon_sym_SEMI, + [47776] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(627), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(762), 2, + STATE(777), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1485), 5, + ACTIONS(1536), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1483), 29, + ACTIONS(1534), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -63047,7 +64025,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -63064,24 +64041,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [47111] = 5, + anon_sym_SEMI, + [47825] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1754), 1, - sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, STATE(771), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1491), 5, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1209), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1489), 29, + ACTIONS(1204), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -63091,7 +64069,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -63108,79 +64085,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [47160] = 19, + anon_sym_SEMI, + [47874] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1574), 1, + anon_sym_EQ, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1763), 1, + ACTIONS(1758), 1, anon_sym_PIPE, - ACTIONS(1767), 1, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1771), 1, + ACTIONS(1768), 1, anon_sym_not, - ACTIONS(1773), 1, + ACTIONS(1770), 1, anon_sym_AMP, - ACTIONS(1775), 1, + ACTIONS(1772), 1, anon_sym_CARET, - ACTIONS(1779), 1, + ACTIONS(1776), 1, anon_sym_is, - STATE(997), 1, + STATE(1008), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1757), 2, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1754), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1760), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1777), 2, + ACTIONS(1774), 2, anon_sym_LT, anon_sym_GT, - STATE(733), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1766), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1761), 6, + ACTIONS(1756), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1597), 8, + ACTIONS(1558), 7, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [47237] = 4, + anon_sym_SEMI, + [47953] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(585), 1, + ACTIONS(590), 1, anon_sym_COLON_EQ, - ACTIONS(265), 6, + ACTIONS(272), 6, anon_sym_STAR, anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 30, + ACTIONS(303), 30, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -63211,64 +64188,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47284] = 4, + [48000] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1219), 1, - anon_sym_COLON_EQ, - ACTIONS(1178), 6, - anon_sym_STAR, - anon_sym_COLON, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1173), 30, + ACTIONS(1554), 1, anon_sym_DOT, + ACTIONS(1556), 1, anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_else, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1570), 1, anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, + ACTIONS(1784), 1, + anon_sym_PIPE, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - anon_sym_AT, + ACTIONS(1792), 1, anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, + ACTIONS(1794), 1, anon_sym_AMP, + ACTIONS(1796), 1, anon_sym_CARET, + ACTIONS(1800), 1, + anon_sym_is, + STATE(1014), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1778), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1780), 2, + anon_sym_GT_GT, anon_sym_LT_LT, + ACTIONS(1786), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1798), 2, + anon_sym_LT, + anon_sym_GT, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1790), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1782), 6, + anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - anon_sym_is, - [47331] = 5, + ACTIONS(1558), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [48077] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1781), 1, + ACTIONS(1802), 1, sym__string_start, - STATE(775), 2, + STATE(776), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1491), 5, + ACTIONS(1525), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1489), 29, + ACTIONS(1523), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -63298,21 +64290,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [47380] = 5, + [48126] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1784), 1, + ACTIONS(1805), 1, sym__template_string_start, - STATE(776), 2, + STATE(777), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1498), 5, + ACTIONS(1512), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1496), 29, + ACTIONS(1510), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -63342,24 +64334,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [47429] = 3, + [48175] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 5, + ACTIONS(1488), 1, + anon_sym_COLON_EQ, + ACTIONS(1209), 6, anon_sym_STAR, + anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1267), 32, + ACTIONS(1204), 30, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_else, anon_sym_in, anon_sym_PIPE, @@ -63384,21 +64377,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47474] = 5, + [48222] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(83), 1, - sym__template_string_start, - STATE(776), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1485), 5, + sym__string_start, + STATE(770), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1209), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1483), 29, + ACTIONS(1204), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -63428,91 +64421,90 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [47523] = 20, + [48271] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1613), 1, + ACTIONS(1574), 1, anon_sym_EQ, - ACTIONS(1787), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1797), 1, + ACTIONS(1818), 1, anon_sym_PIPE, - ACTIONS(1801), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1807), 1, + ACTIONS(1828), 1, anon_sym_not, - ACTIONS(1809), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1811), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1815), 1, + ACTIONS(1836), 1, anon_sym_is, - STATE(1002), 1, + STATE(1004), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1791), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1813), 2, + ACTIONS(1834), 2, anon_sym_LT, anon_sym_GT, - STATE(904), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1805), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1795), 6, + ACTIONS(1816), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1597), 7, - sym__newline, - anon_sym_from, + ACTIONS(1558), 7, anon_sym_COMMA, anon_sym_if, + anon_sym_RBRACE, anon_sym_and, anon_sym_or, - anon_sym_SEMI, - [47602] = 4, + anon_sym_COLON2, + sym_type_conversion, + [48350] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(599), 1, - anon_sym_COLON_EQ, - ACTIONS(265), 5, - anon_sym_as, + ACTIONS(630), 1, + sym__string_start, + STATE(784), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1209), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 31, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, @@ -63530,32 +64522,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47649] = 4, + anon_sym_COLON2, + sym_type_conversion, + [48399] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1817), 1, - anon_sym_COLON_EQ, - ACTIONS(1178), 5, - anon_sym_as, + ACTIONS(632), 1, + sym__template_string_start, + STATE(785), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1209), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 31, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, @@ -63573,33 +64566,34 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47696] = 5, + anon_sym_COLON2, + sym_type_conversion, + [48448] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(81), 1, - sym__string_start, - STATE(765), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1178), 5, + ACTIONS(1295), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, - sym__newline, + ACTIONS(1290), 32, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -63616,76 +64610,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [47745] = 10, + [48493] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - ACTIONS(1728), 2, + ACTIONS(630), 1, + sym__string_start, + STATE(768), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1532), 5, anon_sym_STAR, - anon_sym_SLASH, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 3, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1742), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 22, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [47803] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1724), 1, + ACTIONS(1530), 29, anon_sym_DOT, - ACTIONS(1726), 1, anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1719), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1717), 25, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -63693,7 +64634,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -63711,27 +64654,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [47857] = 8, + [48542] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1697), 5, + ACTIONS(632), 1, + sym__template_string_start, + STATE(769), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1536), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1695), 25, + ACTIONS(1534), 29, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -63739,7 +64678,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -63757,35 +64698,34 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [47911] = 8, + [48591] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(1838), 1, + anon_sym_COLON_EQ, + ACTIONS(1209), 5, + anon_sym_as, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 25, + ACTIONS(1204), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -63801,46 +64741,40 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [47965] = 11, + [48638] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - ACTIONS(1728), 2, + ACTIONS(604), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 5, + anon_sym_as, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1736), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1742), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 20, + ACTIONS(303), 31, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -63850,50 +64784,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48025] = 15, + [48685] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1726), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1734), 1, + ACTIONS(1758), 1, anon_sym_PIPE, - ACTIONS(1738), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1740), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1746), 1, + ACTIONS(1770), 1, anon_sym_AMP, - ACTIONS(1748), 1, + ACTIONS(1772), 1, anon_sym_CARET, - ACTIONS(1728), 2, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1730), 2, + ACTIONS(1754), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1736), 2, + ACTIONS(1760), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(906), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1701), 3, + ACTIONS(1722), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1742), 3, + ACTIONS(1766), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1699), 15, + ACTIONS(1720), 15, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, anon_sym_in, - anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -63903,267 +64836,121 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48093] = 14, + anon_sym_SEMI, + [48753] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, + ACTIONS(1840), 1, anon_sym_DOT, - ACTIONS(1726), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1738), 1, + ACTIONS(1850), 1, + anon_sym_PIPE, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1740), 1, + ACTIONS(1856), 1, anon_sym_STAR_STAR, - ACTIONS(1746), 1, + ACTIONS(1860), 1, + anon_sym_not, + ACTIONS(1862), 1, anon_sym_AMP, - ACTIONS(1748), 1, + ACTIONS(1864), 1, anon_sym_CARET, - ACTIONS(1728), 2, + ACTIONS(1868), 1, + anon_sym_is, + STATE(1016), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1844), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1730), 2, + ACTIONS(1846), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1736), 2, + ACTIONS(1852), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 3, - anon_sym_EQ, + ACTIONS(1866), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1742), 3, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 16, - anon_sym_COMMA, - anon_sym_if, + ACTIONS(1848), 6, anon_sym_in, - anon_sym_PIPE, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48159] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1767), 1, - anon_sym_STAR_STAR, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1697), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1695), 26, + ACTIONS(1558), 7, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, + anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_RBRACE, - anon_sym_AT, - anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [48213] = 8, + [48829] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(664), 1, + sym__string_start, + STATE(749), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1209), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 25, + ACTIONS(1204), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_RBRACE, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48267] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, anon_sym_LBRACK, - ACTIONS(1740), 1, anon_sym_STAR_STAR, - ACTIONS(1748), 1, - anon_sym_CARET, - ACTIONS(1728), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1730), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1736), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1742), 3, anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 17, - anon_sym_COMMA, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_AMP, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48331] = 12, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - ACTIONS(1728), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1730), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1736), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1742), 3, - anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 18, - anon_sym_COMMA, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_RBRACE, - anon_sym_not, - anon_sym_and, - anon_sym_or, anon_sym_AMP, anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48393] = 5, + [48877] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - STATE(744), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1178), 4, + ACTIONS(666), 1, + sym__template_string_start, + STATE(750), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1209), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -64193,20 +64980,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48441] = 5, + [48925] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(649), 1, - sym__template_string_start, - STATE(745), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1178), 4, + ACTIONS(1548), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1546), 32, + sym__string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -64220,6 +65003,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64236,36 +65021,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48489] = 8, + [48969] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, - anon_sym_DOT, - ACTIONS(1789), 1, - anon_sym_LPAREN, - ACTIONS(1801), 1, - anon_sym_LBRACK, - ACTIONS(1803), 1, - anon_sym_STAR_STAR, - STATE(904), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 5, + ACTIONS(1544), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 25, - sym__newline, - anon_sym_from, + ACTIONS(1542), 32, + sym__template_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -64281,142 +65062,109 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [48543] = 15, + [49013] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1734), 1, - anon_sym_PIPE, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - ACTIONS(1746), 1, - anon_sym_AMP, - ACTIONS(1748), 1, - anon_sym_CARET, - ACTIONS(1728), 2, + ACTIONS(1552), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1730), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1736), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1711), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1742), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1709), 15, + ACTIONS(1550), 32, + sym__string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48611] = 15, + [49057] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1724), 1, - anon_sym_DOT, - ACTIONS(1726), 1, - anon_sym_LPAREN, - ACTIONS(1734), 1, - anon_sym_PIPE, - ACTIONS(1738), 1, - anon_sym_LBRACK, - ACTIONS(1740), 1, - anon_sym_STAR_STAR, - ACTIONS(1746), 1, - anon_sym_AMP, - ACTIONS(1748), 1, - anon_sym_CARET, - ACTIONS(1728), 2, + ACTIONS(1540), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1730), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1736), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(906), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1715), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1742), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1713), 15, + ACTIONS(1538), 32, + sym__template_string_start, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACK, anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48679] = 11, + [49101] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1791), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1799), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(904), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 3, + ACTIONS(1714), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1805), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 20, + ACTIONS(1712), 25, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -64424,9 +65172,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_if, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -64437,52 +65190,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [48739] = 15, + [49155] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1797), 1, - anon_sym_PIPE, - ACTIONS(1801), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1809), 1, - anon_sym_AMP, - ACTIONS(1811), 1, - anon_sym_CARET, - ACTIONS(1791), 2, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1760), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(904), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1701), 3, + ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1805), 3, + ACTIONS(1766), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1699), 15, + ACTIONS(1712), 20, sym__newline, anon_sym_from, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, anon_sym_in, + anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -64490,48 +65239,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [48807] = 14, + [49215] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1758), 1, + anon_sym_PIPE, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1809), 1, + ACTIONS(1770), 1, anon_sym_AMP, - ACTIONS(1811), 1, + ACTIONS(1772), 1, anon_sym_CARET, - ACTIONS(1791), 2, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, + ACTIONS(1754), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1760), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(904), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 3, + ACTIONS(1740), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1805), 3, + ACTIONS(1766), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 16, + ACTIONS(1738), 15, sym__newline, anon_sym_from, anon_sym_COMMA, anon_sym_if, anon_sym_in, - anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -64542,32 +65292,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [48873] = 10, + [49283] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1791), 2, - anon_sym_STAR, - anon_sym_SLASH, - STATE(904), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 3, + ACTIONS(1726), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1805), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 22, + ACTIONS(1724), 25, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -64577,50 +65322,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [48931] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1767), 1, - anon_sym_STAR_STAR, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1719), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1717), 26, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_RBRACE, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -64636,50 +65337,53 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48985] = 13, + anon_sym_SEMI, + [49337] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1758), 1, + anon_sym_PIPE, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1811), 1, + ACTIONS(1770), 1, + anon_sym_AMP, + ACTIONS(1772), 1, anon_sym_CARET, - ACTIONS(1791), 2, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, + ACTIONS(1754), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1760), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(904), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 3, + ACTIONS(1718), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1805), 3, + ACTIONS(1766), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 17, + ACTIONS(1716), 15, sym__newline, anon_sym_from, anon_sym_COMMA, anon_sym_if, anon_sym_in, - anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_AMP, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -64687,38 +65391,42 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49049] = 12, + [49405] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1791), 2, + ACTIONS(1770), 1, + anon_sym_AMP, + ACTIONS(1772), 1, + anon_sym_CARET, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, + ACTIONS(1754), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1760), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(904), 2, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 3, + ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1805), 3, + ACTIONS(1766), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 18, + ACTIONS(1712), 16, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -64728,8 +65436,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_AMP, - anon_sym_CARET, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -64737,38 +65443,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49111] = 3, + [49471] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1519), 4, + ACTIONS(1748), 1, + anon_sym_DOT, + ACTIONS(1750), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_STAR_STAR, + ACTIONS(1752), 2, anon_sym_STAR, anon_sym_SLASH, + STATE(895), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1517), 32, - sym__string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1766), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 22, + sym__newline, + anon_sym_from, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -64778,32 +65490,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49155] = 3, + anon_sym_SEMI, + [49529] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1523), 4, + ACTIONS(1748), 1, + anon_sym_DOT, + ACTIONS(1750), 1, + anon_sym_LPAREN, + ACTIONS(1762), 1, + anon_sym_LBRACK, + ACTIONS(1764), 1, + anon_sym_STAR_STAR, + STATE(895), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1521), 32, - sym__template_string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1712), 25, + sym__newline, + anon_sym_from, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -64819,32 +65536,36 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49199] = 3, + anon_sym_SEMI, + [49583] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1527), 4, + ACTIONS(1808), 1, + anon_sym_DOT, + ACTIONS(1810), 1, + anon_sym_LPAREN, + ACTIONS(1822), 1, + anon_sym_LBRACK, + ACTIONS(1824), 1, + anon_sym_STAR_STAR, + STATE(925), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1730), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1525), 32, - sym__string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1728), 25, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -64860,32 +65581,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49243] = 3, + anon_sym_COLON2, + sym_type_conversion, + [49637] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1531), 4, + ACTIONS(1808), 1, + anon_sym_DOT, + ACTIONS(1810), 1, + anon_sym_LPAREN, + ACTIONS(1822), 1, + anon_sym_LBRACK, + ACTIONS(1824), 1, + anon_sym_STAR_STAR, + STATE(925), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1529), 32, - sym__template_string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1724), 25, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -64901,45 +65627,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49287] = 8, + anon_sym_COLON2, + sym_type_conversion, + [49691] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - STATE(904), 2, + ACTIONS(1772), 1, + anon_sym_CARET, + ACTIONS(1752), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1754), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1760), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1697), 5, - anon_sym_STAR, + ACTIONS(1714), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1695), 25, + ACTIONS(1766), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 17, sym__newline, anon_sym_from, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_AT, + anon_sym_in, + anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -64947,45 +65680,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49341] = 8, + [49755] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - STATE(904), 2, + ACTIONS(1752), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1754), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1760), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(895), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1719), 5, - anon_sym_STAR, + ACTIONS(1714), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1717), 25, + ACTIONS(1766), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 18, sym__newline, anon_sym_from, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, @@ -64993,26 +65730,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49395] = 8, + [49817] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - STATE(733), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 4, + ACTIONS(1726), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 26, + ACTIONS(1724), 26, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -65039,40 +65776,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49449] = 11, + [49871] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1714), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 21, + ACTIONS(1712), 20, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_RBRACE, @@ -65088,48 +65823,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49509] = 15, + anon_sym_COLON2, + sym_type_conversion, + [49931] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1763), 1, + ACTIONS(1818), 1, anon_sym_PIPE, - ACTIONS(1767), 1, + ACTIONS(1822), 1, + anon_sym_LBRACK, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1773), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1775), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1701), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1740), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1699), 16, + ACTIONS(1738), 15, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_RBRACE, anon_sym_not, @@ -65141,46 +65876,46 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49577] = 14, + anon_sym_COLON2, + sym_type_conversion, + [49999] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1773), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1775), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1714), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 17, + ACTIONS(1712), 16, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_RBRACE, @@ -65193,37 +65928,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49643] = 10, + anon_sym_COLON2, + sym_type_conversion, + [50065] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1714), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 23, + ACTIONS(1712), 22, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -65241,32 +65976,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49701] = 8, + anon_sym_COLON2, + sym_type_conversion, + [50123] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 4, + ACTIONS(1714), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 26, + ACTIONS(1712), 25, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -65287,44 +66022,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49755] = 13, + anon_sym_COLON2, + sym_type_conversion, + [50177] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1775), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1714), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 18, + ACTIONS(1712), 17, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_RBRACE, @@ -65338,42 +66073,42 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49819] = 12, + anon_sym_COLON2, + sym_type_conversion, + [50241] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1767), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1714), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 19, + ACTIONS(1712), 18, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_RBRACE, @@ -65388,48 +66123,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49881] = 15, + anon_sym_COLON2, + sym_type_conversion, + [50303] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1763), 1, + ACTIONS(1818), 1, anon_sym_PIPE, - ACTIONS(1767), 1, + ACTIONS(1822), 1, + anon_sym_LBRACK, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1773), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1775), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1711), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1718), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1709), 16, + ACTIONS(1716), 15, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_RBRACE, anon_sym_not, @@ -65441,48 +66176,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49949] = 15, + anon_sym_COLON2, + sym_type_conversion, + [50371] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1593), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1595), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1763), 1, + ACTIONS(1818), 1, anon_sym_PIPE, - ACTIONS(1767), 1, + ACTIONS(1822), 1, + anon_sym_LBRACK, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1773), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1775), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1715), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1757), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1759), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1765), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(733), 2, + STATE(925), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1769), 3, + ACTIONS(1722), 3, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1713), 16, + ACTIONS(1720), 15, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_RBRACE, anon_sym_not, @@ -65494,159 +66229,193 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50017] = 19, + anon_sym_COLON2, + sym_type_conversion, + [50439] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1748), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1829), 1, - anon_sym_PIPE, - ACTIONS(1833), 1, + ACTIONS(1762), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1764), 1, anon_sym_STAR_STAR, - ACTIONS(1839), 1, - anon_sym_not, - ACTIONS(1841), 1, - anon_sym_AMP, - ACTIONS(1843), 1, - anon_sym_CARET, - ACTIONS(1847), 1, - anon_sym_is, - STATE(1009), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1823), 2, + STATE(895), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1730), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, - ACTIONS(1825), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1728), 25, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1831), 2, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1845), 2, - anon_sym_LT, - anon_sym_GT, - STATE(977), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1837), 3, anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1827), 6, - anon_sym_in, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1597), 7, - anon_sym_RPAREN, + anon_sym_is, + anon_sym_SEMI, + [50493] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1788), 1, + anon_sym_STAR_STAR, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1712), 26, anon_sym_COMMA, - anon_sym_as, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_RBRACE, + anon_sym_AT, + anon_sym_not, anon_sym_and, anon_sym_or, - [50093] = 15, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [50547] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1797), 1, - anon_sym_PIPE, - ACTIONS(1801), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - ACTIONS(1809), 1, - anon_sym_AMP, - ACTIONS(1811), 1, - anon_sym_CARET, - ACTIONS(1791), 2, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1778), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(904), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1711), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1805), 3, + ACTIONS(1790), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1709), 15, - sym__newline, - anon_sym_from, + ACTIONS(1712), 21, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [50161] = 15, + [50607] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1797), 1, - anon_sym_PIPE, - ACTIONS(1801), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1784), 1, + anon_sym_PIPE, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - ACTIONS(1809), 1, + ACTIONS(1794), 1, anon_sym_AMP, - ACTIONS(1811), 1, + ACTIONS(1796), 1, anon_sym_CARET, - ACTIONS(1791), 2, + ACTIONS(1740), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1778), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1793), 2, + ACTIONS(1780), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1799), 2, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(904), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1715), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1805), 3, + ACTIONS(1790), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1713), 15, - sym__newline, - anon_sym_from, + ACTIONS(1738), 16, anon_sym_COMMA, anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -65656,124 +66425,97 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [50229] = 8, + [50675] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1787), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1789), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1801), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1803), 1, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - STATE(904), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, + ACTIONS(1794), 1, + anon_sym_AMP, + ACTIONS(1796), 1, + anon_sym_CARET, + ACTIONS(1714), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 25, - sym__newline, - anon_sym_from, - anon_sym_COMMA, + ACTIONS(1778), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1780), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1790), 3, anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [50283] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(278), 1, - anon_sym_COLON_EQ, - ACTIONS(265), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(298), 29, - sym__newline, - anon_sym_DOT, - anon_sym_from, - anon_sym_LPAREN, + ACTIONS(1712), 17, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [50328] = 3, + [50741] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1523), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1521), 30, - sym__newline, - sym__template_string_start, + ACTIONS(1554), 1, anon_sym_DOT, - anon_sym_from, + ACTIONS(1556), 1, anon_sym_LPAREN, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1788), 1, + anon_sym_STAR_STAR, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1778), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1790), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 23, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -65783,37 +66525,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [50371] = 8, + [50799] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1833), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - STATE(977), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1693), 4, + ACTIONS(1714), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 25, - anon_sym_RPAREN, + ACTIONS(1712), 26, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_RBRACE, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -65829,137 +66571,151 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50424] = 11, + [50853] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1833), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - ACTIONS(1693), 2, + ACTIONS(1796), 1, + anon_sym_CARET, + ACTIONS(1714), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1823), 2, + ACTIONS(1778), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1831), 2, + ACTIONS(1780), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(977), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1837), 3, + ACTIONS(1790), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 20, - anon_sym_RPAREN, + ACTIONS(1712), 18, anon_sym_COMMA, - anon_sym_as, - anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50483] = 3, + [50917] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1531), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1529), 30, - sym__newline, - sym__template_string_start, + ACTIONS(1554), 1, anon_sym_DOT, - anon_sym_from, + ACTIONS(1556), 1, anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1788), 1, + anon_sym_STAR_STAR, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1778), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1780), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1790), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 19, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [50526] = 15, + [50979] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1829), 1, - anon_sym_PIPE, - ACTIONS(1833), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1784), 1, + anon_sym_PIPE, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - ACTIONS(1841), 1, + ACTIONS(1794), 1, anon_sym_AMP, - ACTIONS(1843), 1, + ACTIONS(1796), 1, anon_sym_CARET, - ACTIONS(1701), 2, + ACTIONS(1718), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1823), 2, + ACTIONS(1778), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1825), 2, + ACTIONS(1780), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1831), 2, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(977), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1837), 3, + ACTIONS(1790), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1699), 15, - anon_sym_RPAREN, + ACTIONS(1716), 16, anon_sym_COMMA, - anon_sym_as, anon_sym_if, anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -65969,48 +66725,50 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50593] = 14, + [51047] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1833), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1784), 1, + anon_sym_PIPE, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - ACTIONS(1841), 1, + ACTIONS(1794), 1, anon_sym_AMP, - ACTIONS(1843), 1, + ACTIONS(1796), 1, anon_sym_CARET, - ACTIONS(1693), 2, + ACTIONS(1722), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1823), 2, + ACTIONS(1778), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1825), 2, + ACTIONS(1780), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1831), 2, + ACTIONS(1786), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(977), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1837), 3, + ACTIONS(1790), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1691), 16, - anon_sym_RPAREN, + ACTIONS(1720), 16, anon_sym_COMMA, - anon_sym_as, anon_sym_if, anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, - anon_sym_PIPE, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -66020,44 +66778,43 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50658] = 10, + [51115] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1554), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1556), 1, anon_sym_LPAREN, - ACTIONS(1833), 1, + ACTIONS(1570), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1788), 1, anon_sym_STAR_STAR, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1823), 2, - anon_sym_STAR, - anon_sym_SLASH, - STATE(977), 2, + STATE(708), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1837), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 22, - anon_sym_RPAREN, + ACTIONS(1730), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1728), 26, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_RBRACE, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -66067,77 +66824,77 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50715] = 4, + [51169] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1173), 3, + ACTIONS(1808), 1, anon_sym_DOT, + ACTIONS(1810), 1, anon_sym_LPAREN, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1178), 13, + ACTIONS(1824), 1, + anon_sym_STAR_STAR, + STATE(925), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 5, anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1712), 25, + anon_sym_COMMA, anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_STAR_STAR, + anon_sym_RBRACE, anon_sym_AT, - anon_sym_SLASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1223), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [50760] = 8, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_COLON2, + sym_type_conversion, + [51223] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, - anon_sym_DOT, - ACTIONS(1821), 1, - anon_sym_LPAREN, - ACTIONS(1833), 1, - anon_sym_LBRACK, - ACTIONS(1835), 1, - anon_sym_STAR_STAR, - STATE(977), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1693), 4, + ACTIONS(1268), 1, + anon_sym_COLON_EQ, + ACTIONS(1209), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1691), 25, - anon_sym_RPAREN, + ACTIONS(1204), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -66153,172 +66910,115 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50813] = 13, + anon_sym_SEMI, + [51268] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, - anon_sym_DOT, - ACTIONS(1821), 1, - anon_sym_LPAREN, - ACTIONS(1833), 1, - anon_sym_LBRACK, - ACTIONS(1835), 1, - anon_sym_STAR_STAR, - ACTIONS(1843), 1, - anon_sym_CARET, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1823), 2, + ACTIONS(1870), 1, + anon_sym_COLON_EQ, + ACTIONS(1209), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, - ACTIONS(1825), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1831), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(977), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1837), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 17, - anon_sym_RPAREN, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 29, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_COMMA, - anon_sym_as, + anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50876] = 12, + anon_sym_COLON2, + sym_type_conversion, + [51313] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1840), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1833), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1856), 1, anon_sym_STAR_STAR, - ACTIONS(1693), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1823), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1825), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1831), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(977), 2, + STATE(953), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1837), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1691), 18, + ACTIONS(1730), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1728), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50937] = 4, + [51366] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1267), 3, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(1272), 13, + ACTIONS(1544), 5, anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_SLASH, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - ACTIONS(1274), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [50982] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(599), 1, - anon_sym_COLON_EQ, - ACTIONS(651), 1, anon_sym_EQ, - ACTIONS(265), 4, - anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 29, + ACTIONS(1542), 30, + sym__template_string_start, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -66335,19 +67035,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51029] = 4, + anon_sym_COLON2, + sym_type_conversion, + [51409] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(613), 1, + ACTIONS(283), 1, anon_sym_COLON_EQ, - ACTIONS(265), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 29, + ACTIONS(303), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -66357,7 +67061,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -66374,19 +67077,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [51074] = 3, + anon_sym_SEMI, + [51454] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1527), 5, + ACTIONS(618), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1525), 30, - sym__string_start, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -66416,18 +67119,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [51117] = 4, + [51499] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1849), 1, + ACTIONS(1872), 1, anon_sym_COLON_EQ, - ACTIONS(1178), 5, + ACTIONS(1209), 5, anon_sym_STAR, anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -66457,140 +67160,115 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51162] = 15, + [51544] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1290), 3, anon_sym_DOT, - ACTIONS(1821), 1, anon_sym_LPAREN, - ACTIONS(1829), 1, - anon_sym_PIPE, - ACTIONS(1833), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, - anon_sym_STAR_STAR, - ACTIONS(1841), 1, - anon_sym_AMP, - ACTIONS(1843), 1, - anon_sym_CARET, - ACTIONS(1711), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1823), 2, + ACTIONS(1295), 13, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1825), 2, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1831), 2, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - STATE(977), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1837), 3, + anon_sym_STAR_STAR, anon_sym_AT, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1709), 15, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1297), 19, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, anon_sym_in, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [51229] = 15, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [51589] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1840), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1829), 1, - anon_sym_PIPE, - ACTIONS(1833), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1856), 1, anon_sym_STAR_STAR, - ACTIONS(1841), 1, - anon_sym_AMP, - ACTIONS(1843), 1, - anon_sym_CARET, - ACTIONS(1715), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1823), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1825), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1831), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(977), 2, + STATE(953), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1837), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1713), 15, + ACTIONS(1726), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1724), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51296] = 8, + [51642] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, - anon_sym_DOT, - ACTIONS(1821), 1, - anon_sym_LPAREN, - ACTIONS(1833), 1, - anon_sym_LBRACK, - ACTIONS(1835), 1, - anon_sym_STAR_STAR, - STATE(977), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1719), 4, + ACTIONS(1540), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1717), 25, - anon_sym_RPAREN, + ACTIONS(1538), 30, + sym__template_string_start, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -66606,57 +67284,59 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51349] = 22, + anon_sym_COLON2, + sym_type_conversion, + [51685] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1878), 1, anon_sym_STAR, - ACTIONS(1857), 1, + ACTIONS(1880), 1, anon_sym_if, - ACTIONS(1859), 1, + ACTIONS(1882), 1, anon_sym_COLON, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, + STATE(1068), 1, + sym_string, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1277), 4, + STATE(1307), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -66665,16 +67345,57 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [51430] = 3, + [51766] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1204), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1209), 13, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_SLASH, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1272), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [51811] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1519), 5, + ACTIONS(1548), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1517), 30, + ACTIONS(1546), 30, sym__newline, sym__string_start, anon_sym_DOT, @@ -66705,26 +67426,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [51473] = 8, + [51854] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1819), 1, + ACTIONS(1840), 1, anon_sym_DOT, - ACTIONS(1821), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1833), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1835), 1, + ACTIONS(1856), 1, anon_sym_STAR_STAR, - STATE(977), 2, + STATE(953), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1697), 4, + ACTIONS(1714), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1695), 25, + ACTIONS(1712), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -66750,57 +67471,64 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51526] = 4, + [51907] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1173), 3, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1178), 13, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + anon_sym_SLASH, + ACTIONS(1852), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_STAR_STAR, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, - anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - ACTIONS(1184), 19, + ACTIONS(1712), 20, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, anon_sym_COLON, anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [51571] = 3, + anon_sym_PIPE, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [51966] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1519), 5, + ACTIONS(1548), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1517), 30, + ACTIONS(1546), 30, sym__string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -66831,18 +67559,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [51614] = 3, + [52009] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1531), 5, + ACTIONS(1544), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1529), 30, + ACTIONS(1542), 30, + sym__newline, sym__template_string_start, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -66852,7 +67582,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -66869,34 +67598,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [51657] = 5, + anon_sym_SEMI, + [52052] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1817), 1, - anon_sym_COLON_EQ, - ACTIONS(1875), 1, - anon_sym_EQ, - ACTIONS(1178), 4, + ACTIONS(1552), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1550), 30, + sym__string_start, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -66913,25 +67637,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51704] = 4, + anon_sym_COLON2, + sym_type_conversion, + [52095] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1180), 1, + ACTIONS(1838), 1, anon_sym_COLON_EQ, - ACTIONS(1178), 5, + ACTIONS(1206), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1209), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, - sym__newline, + ACTIONS(1204), 27, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -66953,74 +67681,56 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [51749] = 22, + [52142] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(604), 1, + anon_sym_COLON_EQ, + ACTIONS(277), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(272), 4, anon_sym_STAR, - ACTIONS(1861), 1, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1877), 1, - anon_sym_if, - ACTIONS(1879), 1, - anon_sym_COLON, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1277), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [51830] = 4, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [52189] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(298), 3, + ACTIONS(1333), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(265), 13, + ACTIONS(1338), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -67034,7 +67744,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(302), 19, + ACTIONS(1340), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -67054,127 +67764,64 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [51875] = 22, + [52234] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1552), 5, anon_sym_STAR, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, - anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1390), 2, - sym__match_patterns, - sym_open_sequence_match_pattern, - STATE(1391), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1509), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [51956] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1278), 3, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1550), 30, + sym__newline, + sym__string_start, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(1283), 13, - anon_sym_STAR, + anon_sym_COMMA, anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_SLASH, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1285), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [52001] = 5, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [52277] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1817), 1, - anon_sym_COLON_EQ, - ACTIONS(1175), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1178), 4, + ACTIONS(1540), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 27, + ACTIONS(1538), 30, + sym__newline, + sym__template_string_start, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -67196,22 +67843,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52048] = 3, + anon_sym_SEMI, + [52320] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1523), 5, + ACTIONS(638), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 5, anon_sym_STAR, - anon_sym_EQ, + anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1521), 30, - sym__template_string_start, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -67234,16 +67885,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52091] = 4, + [52365] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(298), 3, + ACTIONS(303), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(265), 13, + ACTIONS(272), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -67257,7 +67906,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(593), 19, + ACTIONS(307), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -67277,163 +67926,75 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [52136] = 3, + [52410] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1527), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1525), 30, - sym__newline, - sym__string_start, + ACTIONS(1840), 1, anon_sym_DOT, - anon_sym_from, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, + ACTIONS(1850), 1, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [52179] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, - anon_sym_STAR, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, - anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1391), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1456), 2, - sym__match_patterns, - sym_open_sequence_match_pattern, - STATE(1509), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [52260] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(655), 1, - anon_sym_COLON_EQ, - ACTIONS(265), 5, - anon_sym_STAR, - anon_sym_COLON, - anon_sym_SLASH, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + ACTIONS(1862), 1, + anon_sym_AMP, + ACTIONS(1864), 1, + anon_sym_CARET, + ACTIONS(1740), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 29, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1846), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1852), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1738), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52305] = 5, + [52477] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(599), 1, + ACTIONS(604), 1, anon_sym_COLON_EQ, - ACTIONS(270), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(265), 4, + ACTIONS(634), 1, + anon_sym_EQ, + ACTIONS(272), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 27, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_async, @@ -67459,29 +68020,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52352] = 4, + [52524] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1881), 1, + ACTIONS(1838), 1, anon_sym_COLON_EQ, - ACTIONS(1178), 5, - anon_sym_STAR, + ACTIONS(1898), 1, anon_sym_EQ, + ACTIONS(1209), 4, + anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -67498,29 +68062,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52397] = 3, + [52571] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1629), 5, + ACTIONS(604), 1, + anon_sym_COLON_EQ, + ACTIONS(587), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(272), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1627), 29, + ACTIONS(303), 27, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -67537,114 +68104,195 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52439] = 3, + [52618] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1591), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1589), 29, - sym__newline, + ACTIONS(1204), 3, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, - anon_sym_COMMA, + anon_sym_LBRACK, + ACTIONS(1209), 13, + anon_sym_STAR, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_SEMI, - [52481] = 3, + ACTIONS(1211), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [52663] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1575), 5, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1573), 29, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1900), 1, + anon_sym_if, + ACTIONS(1902), 1, + anon_sym_COLON, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1307), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [52744] = 14, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + ACTIONS(1862), 1, + anon_sym_AMP, + ACTIONS(1864), 1, + anon_sym_CARET, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1846), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1852), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 16, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52523] = 3, + [52809] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1555), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1553), 29, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 22, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, @@ -67654,32 +68302,36 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52565] = 3, + [52866] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 4, + ACTIONS(1840), 1, + anon_sym_DOT, + ACTIONS(1842), 1, + anon_sym_LPAREN, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1267), 30, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1712), 25, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -67695,222 +68347,394 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52607] = 3, + [52919] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1283), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1278), 30, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + ACTIONS(1864), 1, + anon_sym_CARET, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1846), 2, anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1852), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 17, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52649] = 3, + [52982] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1559), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1557), 29, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_STAR_STAR, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1846), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1852), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 18, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52691] = 3, + [53043] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1563), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1561), 29, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, + ACTIONS(1850), 1, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1854), 1, anon_sym_LBRACK, - anon_sym_RBRACE, + ACTIONS(1856), 1, anon_sym_STAR_STAR, + ACTIONS(1862), 1, + anon_sym_AMP, + ACTIONS(1864), 1, + anon_sym_CARET, + ACTIONS(1718), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1846), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1852), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1716), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52733] = 3, + [53110] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1567), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1565), 29, + ACTIONS(1840), 1, anon_sym_DOT, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, + ACTIONS(1850), 1, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1854), 1, anon_sym_LBRACK, - anon_sym_RBRACE, + ACTIONS(1856), 1, anon_sym_STAR_STAR, + ACTIONS(1862), 1, + anon_sym_AMP, + ACTIONS(1864), 1, + anon_sym_CARET, + ACTIONS(1722), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1844), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1846), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1852), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(953), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1858), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1720), 15, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, anon_sym_not, anon_sym_and, anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52775] = 3, + [53177] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1571), 5, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1569), 29, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1407), 2, + sym__match_patterns, + sym_open_sequence_match_pattern, + STATE(1408), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1595), 2, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [53258] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_STAR, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1408), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1495), 2, + sym__match_patterns, + sym_open_sequence_match_pattern, + STATE(1595), 2, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [53339] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(303), 3, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_COMMA, + anon_sym_LBRACK, + ACTIONS(272), 13, + anon_sym_STAR, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52817] = 3, + ACTIONS(598), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [53384] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1001), 5, + ACTIONS(1838), 1, + anon_sym_COLON_EQ, + ACTIONS(1265), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1209), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(999), 29, + ACTIONS(1204), 27, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -67927,19 +68751,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52859] = 3, + [53431] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1535), 5, + ACTIONS(1706), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1533), 29, + ACTIONS(1704), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -67949,7 +68773,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -67966,21 +68789,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [52901] = 3, + anon_sym_SEMI, + [53473] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1685), 5, + ACTIONS(1674), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1683), 29, - sym__newline, + ACTIONS(1672), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -67990,6 +68810,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -68006,17 +68827,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [52943] = 3, + anon_sym_COLON2, + sym_type_conversion, + [53515] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1633), 5, + ACTIONS(1678), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1631), 29, + ACTIONS(1676), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68046,16 +68868,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [52985] = 3, + [53557] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1665), 5, + ACTIONS(1032), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1663), 29, + ACTIONS(1030), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68085,17 +68907,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53027] = 3, + [53599] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1669), 5, + ACTIONS(1674), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1667), 29, + ACTIONS(1672), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -68105,7 +68929,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -68122,18 +68945,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [53069] = 3, + anon_sym_SEMI, + [53641] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 5, + ACTIONS(1614), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 29, + ACTIONS(1612), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68163,16 +68985,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53111] = 3, + [53683] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1677), 5, + ACTIONS(1682), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1675), 29, + ACTIONS(1680), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68202,16 +69024,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53153] = 3, + [53725] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1681), 5, + ACTIONS(1686), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1679), 29, + ACTIONS(1684), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68241,16 +69063,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53195] = 3, + [53767] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 5, + ACTIONS(1690), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 29, + ACTIONS(1688), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68280,19 +69102,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53237] = 3, + [53809] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1559), 5, + ACTIONS(1690), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1557), 29, - sym__newline, + ACTIONS(1688), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -68302,6 +69122,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -68318,17 +69139,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [53279] = 3, + anon_sym_COLON2, + sym_type_conversion, + [53851] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1637), 5, + ACTIONS(1694), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1635), 29, + ACTIONS(1692), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68358,16 +69180,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53321] = 3, + [53893] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1539), 5, + ACTIONS(1698), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1537), 29, + ACTIONS(1696), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68397,16 +69219,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53363] = 3, + [53935] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1547), 5, + ACTIONS(1690), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1545), 29, + ACTIONS(1688), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68436,16 +69258,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53405] = 3, + [53977] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1015), 5, + ACTIONS(1702), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1013), 29, + ACTIONS(1700), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68475,19 +69297,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53447] = 3, + [54019] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1555), 5, + ACTIONS(1702), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1553), 29, - sym__newline, + ACTIONS(1700), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -68497,6 +69317,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -68513,17 +69334,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [53489] = 3, + anon_sym_COLON2, + sym_type_conversion, + [54061] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 5, + ACTIONS(1706), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 29, + ACTIONS(1704), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68553,16 +69375,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53531] = 3, + [54103] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 5, + ACTIONS(1702), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 29, + ACTIONS(1700), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68592,16 +69414,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53573] = 3, + [54145] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1591), 5, + ACTIONS(1622), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1589), 29, + ACTIONS(1620), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68631,16 +69453,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53615] = 3, + [54187] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 5, + ACTIONS(1626), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 29, + ACTIONS(1624), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68670,21 +69492,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53657] = 3, + [54229] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1685), 5, + ACTIONS(1338), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1683), 29, + ACTIONS(1333), 30, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -68707,18 +69531,55 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [53699] = 3, + [54271] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 5, + ACTIONS(1295), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1290), 30, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [54313] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1630), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 29, + ACTIONS(1628), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68748,16 +69609,209 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53741] = 3, + [54355] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 5, + ACTIONS(1618), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 29, + ACTIONS(1616), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [54397] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_STAR, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1904), 1, + anon_sym_RPAREN, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1601), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1602), 2, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [54477] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_STAR, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1904), 1, + anon_sym_RBRACK, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1489), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [54555] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1682), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1680), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [54597] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1634), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1632), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68787,16 +69841,55 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53783] = 3, + [54639] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1650), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1648), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [54681] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1551), 5, + ACTIONS(1638), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1549), 29, + ACTIONS(1636), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68826,16 +69919,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53825] = 3, + [54723] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 5, + ACTIONS(1642), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 29, + ACTIONS(1640), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68865,16 +69958,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53867] = 3, + [54765] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1575), 5, + ACTIONS(1686), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1573), 29, + ACTIONS(1684), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -68904,16 +69997,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [53909] = 3, + [54807] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1567), 5, + ACTIONS(1690), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1565), 29, + ACTIONS(1688), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -68943,16 +70036,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [53951] = 3, + [54849] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 5, + ACTIONS(1690), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 29, + ACTIONS(1688), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -68982,19 +70075,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [53993] = 3, + [54891] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1689), 5, + ACTIONS(1050), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1687), 29, - sym__newline, + ACTIONS(1048), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69004,6 +70095,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69020,22 +70112,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [54035] = 3, + anon_sym_COLON2, + sym_type_conversion, + [54933] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 5, + ACTIONS(1906), 1, + anon_sym_COLON_EQ, + ACTIONS(1209), 5, anon_sym_STAR, - anon_sym_EQ, + anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1267), 29, - sym__newline, + ACTIONS(1204), 28, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, anon_sym_in, @@ -69059,18 +70154,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [54077] = 3, + [54977] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1689), 5, + ACTIONS(1694), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1687), 29, + ACTIONS(1692), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69080,7 +70176,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69097,18 +70192,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54119] = 3, + anon_sym_SEMI, + [55019] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1633), 5, + ACTIONS(1698), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1631), 29, + ACTIONS(1696), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69138,16 +70232,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54161] = 3, + [55061] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 5, + ACTIONS(1690), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1688), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69177,16 +70271,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54203] = 3, + [55103] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 29, + ACTIONS(303), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69216,19 +70310,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54245] = 3, + [55145] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1665), 5, + ACTIONS(1646), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1663), 29, - sym__newline, + ACTIONS(1644), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69238,6 +70330,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69254,19 +70347,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [54287] = 4, + anon_sym_COLON2, + sym_type_conversion, + [55187] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(635), 1, + ACTIONS(652), 1, anon_sym_COLON_EQ, - ACTIONS(265), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 28, + ACTIONS(303), 28, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -69295,25 +70389,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54331] = 4, + [55231] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1883), 1, - anon_sym_COLON_EQ, - ACTIONS(1178), 5, + ACTIONS(1292), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1295), 4, anon_sym_STAR, - anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 28, + ACTIONS(1290), 27, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -69335,16 +70429,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54375] = 3, + [55275] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1669), 5, + ACTIONS(1338), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1667), 29, + ACTIONS(1333), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69374,16 +70468,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54417] = 3, + [55317] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 5, + ACTIONS(1295), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 29, + ACTIONS(1290), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69413,19 +70507,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54459] = 4, + [55359] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1175), 3, + ACTIONS(1265), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACK, - ACTIONS(1178), 4, + ACTIONS(1209), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 27, + ACTIONS(1204), 27, anon_sym_DOT, anon_sym_LPAREN, anon_sym_GT_GT, @@ -69453,19 +70547,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54503] = 3, + [55403] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1551), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1549), 29, - sym__newline, + ACTIONS(303), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69475,6 +70567,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69491,17 +70584,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [54545] = 3, + anon_sym_COLON2, + sym_type_conversion, + [55445] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 5, + ACTIONS(1646), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 29, + ACTIONS(1644), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69531,16 +70625,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54587] = 3, + [55487] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1283), 5, + ACTIONS(1662), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1278), 29, + ACTIONS(1660), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69570,25 +70664,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54629] = 4, + [55529] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1269), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1272), 4, + ACTIONS(1622), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1267), 27, + ACTIONS(1620), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -69610,16 +70702,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54673] = 3, + anon_sym_SEMI, + [55571] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 5, + ACTIONS(1626), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 29, + ACTIONS(1624), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69649,16 +70742,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54715] = 3, + [55613] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1677), 5, + ACTIONS(1614), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1675), 29, + ACTIONS(1612), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69688,19 +70781,57 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54757] = 3, + [55655] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1681), 5, + ACTIONS(1335), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1338), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1333), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [55699] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1618), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1679), 29, - sym__newline, + ACTIONS(1616), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69710,6 +70841,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69726,17 +70858,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [54799] = 3, + anon_sym_COLON2, + sym_type_conversion, + [55741] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 5, + ACTIONS(1710), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 29, + ACTIONS(1708), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69766,17 +70899,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54841] = 3, + [55783] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 5, + ACTIONS(1638), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1636), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69786,7 +70921,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69803,27 +70937,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54883] = 4, + anon_sym_SEMI, + [55825] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1280), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1283), 4, + ACTIONS(1666), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1278), 27, + ACTIONS(1664), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -69845,16 +70976,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54927] = 3, + anon_sym_SEMI, + [55867] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(265), 5, + ACTIONS(1678), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 29, + ACTIONS(1676), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69884,112 +71016,94 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54969] = 21, + [55909] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1670), 5, anon_sym_STAR, - ACTIONS(1861), 1, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1668), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1885), 1, - anon_sym_RPAREN, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1277), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [55047] = 21, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_SEMI, + [55951] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1878), 1, anon_sym_STAR, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - ACTIONS(1885), 1, + ACTIONS(1908), 1, anon_sym_RBRACK, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, + STATE(1068), 1, + sym_string, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1277), 4, + STATE(1307), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -69998,16 +71112,16 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [55125] = 3, + [56029] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1637), 5, + ACTIONS(1630), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1635), 29, + ACTIONS(1628), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70037,19 +71151,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55167] = 3, + [56071] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1539), 5, + ACTIONS(1650), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1537), 29, - sym__newline, + ACTIONS(1648), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70059,6 +71171,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70075,17 +71188,132 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55209] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56113] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_STAR, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1908), 1, + anon_sym_RPAREN, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1307), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [56191] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_STAR, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1910), 1, + anon_sym_RBRACK, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1307), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [56269] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1535), 5, + ACTIONS(1642), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1533), 29, + ACTIONS(1640), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70115,227 +71343,133 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55251] = 22, + [56311] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1654), 5, anon_sym_STAR, - ACTIONS(1861), 1, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1652), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1887), 1, - anon_sym_RPAREN, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1553), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1556), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [55331] = 21, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_COLON2, + sym_type_conversion, + [56353] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1658), 5, anon_sym_STAR, - ACTIONS(1861), 1, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1656), 29, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1887), 1, - anon_sym_RBRACK, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1469), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [55409] = 21, + anon_sym_RBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + anon_sym_COLON2, + sym_type_conversion, + [56395] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1855), 1, + ACTIONS(1878), 1, anon_sym_STAR, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - ACTIONS(1889), 1, + ACTIONS(1910), 1, anon_sym_RPAREN, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1277), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [55487] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, - anon_sym_STAR, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, - anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1889), 1, - anon_sym_RBRACK, - STATE(1039), 1, + STATE(1068), 1, sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1277), 4, + STATE(1307), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -70344,19 +71478,17 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [55565] = 3, + [56473] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1547), 5, + ACTIONS(1662), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1545), 29, - sym__newline, + ACTIONS(1660), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70366,6 +71498,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70382,17 +71515,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55607] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56515] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1563), 5, + ACTIONS(1702), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 29, + ACTIONS(1700), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70422,56 +71556,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55649] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(265), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(298), 29, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_not, - anon_sym_and, - anon_sym_or, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [55691] = 3, + [56557] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1587), 5, + ACTIONS(1702), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1585), 29, + ACTIONS(1700), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70481,7 +71578,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70498,18 +71594,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [55733] = 3, + anon_sym_SEMI, + [56599] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 5, + ACTIONS(1658), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 29, + ACTIONS(1656), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70539,19 +71634,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55775] = 3, + [56641] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1629), 5, + ACTIONS(1710), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1627), 29, - sym__newline, + ACTIONS(1708), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70561,6 +71654,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70577,17 +71671,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55817] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56683] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1587), 5, + ACTIONS(1702), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1585), 29, + ACTIONS(1700), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70617,19 +71712,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55859] = 3, + [56725] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 5, + ACTIONS(1666), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 29, - sym__newline, + ACTIONS(1664), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70639,6 +71732,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70655,17 +71749,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55901] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56767] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1571), 5, + ACTIONS(1654), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1569), 29, + ACTIONS(1652), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70695,28 +71790,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55943] = 3, + [56809] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1559), 4, + ACTIONS(1670), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1557), 29, + ACTIONS(1668), 29, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70733,28 +71827,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [55984] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56851] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1575), 4, + ACTIONS(1209), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1573), 29, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70771,23 +71866,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56025] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56893] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1001), 4, + ACTIONS(1209), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(999), 29, + ACTIONS(1204), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -70809,23 +71906,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56066] = 3, + anon_sym_SEMI, + [56935] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1637), 4, + ACTIONS(1634), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1635), 29, + ACTIONS(1632), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -70847,15 +71945,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56107] = 3, + anon_sym_SEMI, + [56977] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1535), 4, + ACTIONS(1670), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1533), 29, + ACTIONS(1668), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -70885,15 +71984,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56148] = 3, + [57018] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1547), 4, + ACTIONS(1618), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1545), 29, + ACTIONS(1616), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -70923,15 +72022,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56189] = 3, + [57059] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1015), 4, + ACTIONS(1622), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1013), 29, + ACTIONS(1620), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -70961,15 +72060,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56230] = 3, + [57100] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1587), 4, + ACTIONS(1626), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1585), 29, + ACTIONS(1624), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -70999,15 +72098,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56271] = 3, + [57141] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 4, + ACTIONS(1630), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 29, + ACTIONS(1628), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71037,15 +72136,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56312] = 3, + [57182] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 4, + ACTIONS(1634), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 29, + ACTIONS(1632), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71075,15 +72174,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56353] = 3, + [57223] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1583), 4, + ACTIONS(1638), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1581), 29, + ACTIONS(1636), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71113,15 +72212,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56394] = 3, + [57264] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1591), 4, + ACTIONS(1050), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1589), 29, + ACTIONS(1048), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71151,15 +72250,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56435] = 3, + [57305] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 4, + ACTIONS(1646), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 29, + ACTIONS(1644), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71189,15 +72288,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56476] = 3, + [57346] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1629), 4, + ACTIONS(1650), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1627), 29, + ACTIONS(1648), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71227,15 +72326,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56517] = 3, + [57387] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1685), 4, + ACTIONS(1654), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1683), 29, + ACTIONS(1652), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71265,15 +72364,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56558] = 3, + [57428] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1579), 4, + ACTIONS(1658), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1577), 29, + ACTIONS(1656), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71303,15 +72402,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56599] = 3, + [57469] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 4, + ACTIONS(1662), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 29, + ACTIONS(1660), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71341,15 +72440,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56640] = 3, + [57510] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1551), 4, + ACTIONS(1710), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1549), 29, + ACTIONS(1708), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71379,15 +72478,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56681] = 3, + [57551] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(265), 4, + ACTIONS(1666), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 29, + ACTIONS(1664), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71417,72 +72516,91 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56722] = 22, + [57592] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1853), 1, + ACTIONS(1674), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1672), 29, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(1861), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1891), 1, - sym_identifier, - ACTIONS(1893), 1, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [57633] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1678), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1676), 29, + anon_sym_DOT, + anon_sym_LPAREN, anon_sym_RPAREN, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1459), 1, - sym_match_keyword_pattern, - STATE(1534), 1, - sym_match_positional_pattern, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1526), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [56801] = 3, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [57674] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1543), 4, + ACTIONS(1032), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1541), 29, + ACTIONS(1030), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71512,15 +72630,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56842] = 3, + [57715] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1563), 4, + ACTIONS(1682), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1561), 29, + ACTIONS(1680), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71550,15 +72668,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56883] = 3, + [57756] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1633), 4, + ACTIONS(1686), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1631), 29, + ACTIONS(1684), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71588,15 +72706,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56924] = 3, + [57797] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1567), 4, + ACTIONS(1690), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1565), 29, + ACTIONS(1688), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71626,15 +72744,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [56965] = 3, + [57838] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1555), 4, + ACTIONS(1690), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1553), 29, + ACTIONS(1688), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71664,15 +72782,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57006] = 3, + [57879] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1665), 4, + ACTIONS(1694), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1663), 29, + ACTIONS(1692), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71702,15 +72820,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57047] = 3, + [57920] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1669), 4, + ACTIONS(1698), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1667), 29, + ACTIONS(1696), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71740,25 +72858,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57088] = 5, + [57961] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(585), 1, - anon_sym_COLON_EQ, - ACTIONS(651), 1, - anon_sym_EQ, - ACTIONS(265), 4, + ACTIONS(1690), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(298), 27, + ACTIONS(1688), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -71780,25 +72896,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57133] = 5, + [58002] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1219), 1, - anon_sym_COLON_EQ, - ACTIONS(1875), 1, - anon_sym_EQ, - ACTIONS(1178), 4, + ACTIONS(1702), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1173), 27, + ACTIONS(1700), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -71820,15 +72934,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57178] = 3, + [58043] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 4, + ACTIONS(1702), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 29, + ACTIONS(1700), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71858,15 +72972,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57219] = 3, + [58084] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1571), 4, + ACTIONS(1706), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1569), 29, + ACTIONS(1704), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71896,15 +73010,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57260] = 3, + [58125] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1677), 4, + ACTIONS(1702), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1675), 29, + ACTIONS(1700), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71912,7 +73026,216 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [58166] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1874), 1, + sym_identifier, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_STAR, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1307), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [58241] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1912), 1, + sym_identifier, + ACTIONS(1914), 1, + anon_sym_RPAREN, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1424), 1, + sym_match_keyword_pattern, + STATE(1558), 1, + sym_match_positional_pattern, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1611), 2, + sym__match_pattern, + sym_match_as_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [58320] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(664), 1, + sym__string_start, + ACTIONS(666), 1, + sym__template_string_start, + ACTIONS(1876), 1, + anon_sym_LPAREN, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1886), 1, + sym_match_wildcard_pattern, + ACTIONS(1888), 1, + anon_sym_LBRACK, + ACTIONS(1890), 1, + anon_sym_LBRACE, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1912), 1, + sym_identifier, + ACTIONS(1916), 1, + anon_sym_RPAREN, + STATE(1043), 1, + sym_template_string, + STATE(1068), 1, + sym_string, + STATE(1421), 1, + sym_match_keyword_pattern, + STATE(1558), 1, + sym_match_positional_pattern, + STATE(1650), 1, + sym_pattern_class_name, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1240), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1611), 2, + sym__match_pattern, + sym_match_as_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + STATE(1117), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [58399] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1488), 1, + anon_sym_COLON_EQ, + ACTIONS(1898), 1, + anon_sym_EQ, + ACTIONS(1209), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1204), 27, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -71934,15 +73257,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57301] = 3, + [58444] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1689), 4, + ACTIONS(1209), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1687), 29, + ACTIONS(1204), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -71972,23 +73295,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57342] = 3, + [58485] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1681), 4, + ACTIONS(590), 1, + anon_sym_COLON_EQ, + ACTIONS(634), 1, + anon_sym_EQ, + ACTIONS(272), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1679), 29, + ACTIONS(303), 27, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_GT_GT, anon_sym_if, - anon_sym_COLON, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -72010,110 +73335,55 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57383] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1851), 1, - sym_identifier, - ACTIONS(1853), 1, - anon_sym_LPAREN, - ACTIONS(1855), 1, - anon_sym_STAR, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, - anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1277), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [57458] = 22, + [58530] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - ACTIONS(1891), 1, + ACTIONS(1912), 1, sym_identifier, - ACTIONS(1895), 1, + ACTIONS(1918), 1, anon_sym_RPAREN, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1438), 1, - sym_match_keyword_pattern, - STATE(1534), 1, + STATE(1068), 1, + sym_string, + STATE(1488), 1, sym_match_positional_pattern, - STATE(1680), 1, + STATE(1493), 1, + sym_match_keyword_pattern, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1526), 2, + STATE(1611), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -72122,15 +73392,15 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [57537] = 3, + [58609] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1673), 4, + ACTIONS(272), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1671), 29, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72160,72 +73430,53 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57578] = 22, + [58650] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, - sym__string_start, - ACTIONS(649), 1, - sym__template_string_start, - ACTIONS(1853), 1, + ACTIONS(1614), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1612), 29, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(1861), 1, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_COLON, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1863), 1, - sym_match_wildcard_pattern, - ACTIONS(1865), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1867), 1, - anon_sym_LBRACE, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1891), 1, - sym_identifier, - ACTIONS(1897), 1, - anon_sym_RPAREN, - STATE(1039), 1, - sym_string, - STATE(1040), 1, - sym_template_string, - STATE(1381), 1, - sym_match_keyword_pattern, - STATE(1466), 1, - sym_match_positional_pattern, - STATE(1680), 1, - sym_pattern_class_name, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1184), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1526), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - STATE(1142), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [57657] = 3, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [58691] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1539), 4, + ACTIONS(1642), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1537), 29, + ACTIONS(1640), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72255,51 +73506,51 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57698] = 20, + [58732] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1534), 1, + STATE(1068), 1, + sym_string, + STATE(1558), 1, sym_match_positional_pattern, - STATE(1680), 1, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1526), 2, + STATE(1611), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -72308,49 +73559,49 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [57771] = 19, + [58805] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, + STATE(1068), 1, + sym_string, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1542), 2, + STATE(1534), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -72359,49 +73610,49 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [57841] = 19, + [58875] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1863), 1, + ACTIONS(1886), 1, sym_match_wildcard_pattern, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, + STATE(1068), 1, + sym_string, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1184), 2, + STATE(1240), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1575), 2, + STATE(1549), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1142), 8, + STATE(1117), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -72410,43 +73661,43 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [57911] = 17, + [58945] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - ACTIONS(1899), 1, + ACTIONS(1920), 1, sym_match_wildcard_pattern, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, + STATE(1068), 1, + sym_string, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1116), 8, + STATE(1136), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -72455,43 +73706,43 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [57973] = 17, + [59007] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(647), 1, + ACTIONS(664), 1, sym__string_start, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - ACTIONS(1851), 1, + ACTIONS(1874), 1, sym_identifier, - ACTIONS(1853), 1, + ACTIONS(1876), 1, anon_sym_LPAREN, - ACTIONS(1861), 1, + ACTIONS(1884), 1, anon_sym_DASH, - ACTIONS(1865), 1, + ACTIONS(1888), 1, anon_sym_LBRACK, - ACTIONS(1867), 1, + ACTIONS(1890), 1, anon_sym_LBRACE, - ACTIONS(1869), 1, + ACTIONS(1892), 1, sym_integer, - ACTIONS(1871), 1, + ACTIONS(1894), 1, sym_float, - ACTIONS(1901), 1, + ACTIONS(1922), 1, sym_match_wildcard_pattern, - STATE(1039), 1, - sym_string, - STATE(1040), 1, + STATE(1043), 1, sym_template_string, - STATE(1680), 1, + STATE(1068), 1, + sym_string, + STATE(1650), 1, sym_pattern_class_name, - STATE(1140), 2, + STATE(1116), 2, sym_concatenated_string, sym_concatenated_template_string, - ACTIONS(1873), 3, + ACTIONS(1896), 3, sym_true, sym_false, sym_none, - STATE(1091), 8, + STATE(1101), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -72500,138 +73751,138 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [58035] = 8, + [59069] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1908), 1, - anon_sym_EQ, - ACTIONS(1910), 1, + ACTIONS(1926), 1, + anon_sym_as, + ACTIONS(1931), 1, anon_sym_not, - ACTIONS(1916), 1, + ACTIONS(1937), 1, anon_sym_is, - STATE(989), 1, + STATE(996), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1913), 2, + ACTIONS(1934), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1905), 6, + ACTIONS(1928), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1903), 9, + ACTIONS(1924), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [58074] = 8, + [59108] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1908), 1, - anon_sym_as, - ACTIONS(1922), 1, + ACTIONS(1578), 1, anon_sym_not, - ACTIONS(1928), 1, + ACTIONS(1586), 1, anon_sym_is, - STATE(990), 1, + ACTIONS(1942), 1, + anon_sym_EQ, + STATE(999), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1925), 2, + ACTIONS(1584), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1919), 6, + ACTIONS(1564), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1903), 9, + ACTIONS(1940), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [58113] = 8, + [59147] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1617), 1, + ACTIONS(1602), 1, anon_sym_not, - ACTIONS(1625), 1, + ACTIONS(1610), 1, anon_sym_is, - ACTIONS(1933), 1, - anon_sym_EQ, - STATE(989), 1, + ACTIONS(1942), 1, + anon_sym_as, + STATE(996), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1623), 2, + ACTIONS(1608), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1603), 6, + ACTIONS(1592), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1931), 9, + ACTIONS(1940), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [58152] = 8, + [59186] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1653), 1, + ACTIONS(1926), 1, + anon_sym_EQ, + ACTIONS(1947), 1, anon_sym_not, - ACTIONS(1661), 1, + ACTIONS(1953), 1, anon_sym_is, - ACTIONS(1933), 1, - anon_sym_as, - STATE(990), 1, + STATE(999), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1659), 2, + ACTIONS(1950), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1643), 6, + ACTIONS(1944), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1931), 9, + ACTIONS(1924), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [58191] = 4, + [59225] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1937), 1, + ACTIONS(1958), 1, anon_sym_COMMA, - STATE(993), 1, + STATE(1000), 1, aux_sym__patterns_repeat1, - ACTIONS(1935), 18, + ACTIONS(1956), 18, anon_sym_RPAREN, anon_sym_COLON, anon_sym_in, @@ -72650,65 +73901,80 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [58221] = 16, + [59255] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1940), 1, - sym_identifier, - ACTIONS(1942), 1, - anon_sym_RBRACE, - ACTIONS(1944), 1, - anon_sym_STAR_STAR, - STATE(1317), 1, - sym_string, - STATE(1318), 1, - sym_template_string, - STATE(1477), 1, - sym_match_key_value_pattern, - STATE(1564), 1, - sym_match_double_star_pattern, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1722), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - [58274] = 8, + ACTIONS(1926), 1, + anon_sym_EQ, + ACTIONS(1964), 1, + anon_sym_not, + ACTIONS(1970), 1, + anon_sym_is, + STATE(1001), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1967), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1961), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1924), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_and, + anon_sym_or, + anon_sym_SEMI, + [59292] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1908), 1, + ACTIONS(1973), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_in, + anon_sym_RBRACK, + anon_sym_EQ, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_AT_EQ, + anon_sym_SLASH_SLASH_EQ, + anon_sym_PERCENT_EQ, + anon_sym_STAR_STAR_EQ, + anon_sym_GT_GT_EQ, + anon_sym_LT_LT_EQ, + anon_sym_AMP_EQ, + anon_sym_CARET_EQ, + anon_sym_PIPE_EQ, + [59317] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1926), 1, anon_sym_EQ, - ACTIONS(1949), 1, + ACTIONS(1978), 1, anon_sym_not, - ACTIONS(1955), 1, + ACTIONS(1984), 1, anon_sym_is, - STATE(995), 1, + STATE(1003), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1952), 2, + ACTIONS(1981), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1946), 6, + ACTIONS(1975), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1903), 7, + ACTIONS(1924), 7, anon_sym_COMMA, anon_sym_if, anon_sym_RBRACE, @@ -72716,75 +73982,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_or, anon_sym_COLON2, sym_type_conversion, - [58311] = 16, - ACTIONS(3), 1, - sym_comment, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1940), 1, - sym_identifier, - ACTIONS(1944), 1, - anon_sym_STAR_STAR, - ACTIONS(1958), 1, - anon_sym_RBRACE, - STATE(1317), 1, - sym_string, - STATE(1318), 1, - sym_template_string, - STATE(1569), 1, - sym_match_double_star_pattern, - STATE(1573), 1, - sym_match_key_value_pattern, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1722), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - [58364] = 7, + [59354] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1771), 1, + ACTIONS(1828), 1, anon_sym_not, - ACTIONS(1779), 1, + ACTIONS(1836), 1, anon_sym_is, - STATE(1007), 1, + ACTIONS(1942), 1, + anon_sym_EQ, + STATE(1003), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1777), 2, + ACTIONS(1834), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1761), 6, + ACTIONS(1816), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1931), 8, + ACTIONS(1940), 7, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [58399] = 2, + anon_sym_COLON2, + sym_type_conversion, + [59391] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1960), 19, + ACTIONS(1272), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -72804,10 +74034,113 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [58424] = 2, + [59416] = 16, + ACTIONS(3), 1, + sym_comment, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1987), 1, + sym_identifier, + ACTIONS(1989), 1, + anon_sym_RBRACE, + ACTIONS(1991), 1, + anon_sym_STAR_STAR, + STATE(1369), 1, + sym_string, + STATE(1373), 1, + sym_template_string, + STATE(1557), 1, + sym_match_key_value_pattern, + STATE(1568), 1, + sym_match_double_star_pattern, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1652), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + [59469] = 16, + ACTIONS(3), 1, + sym_comment, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1987), 1, + sym_identifier, + ACTIONS(1991), 1, + anon_sym_STAR_STAR, + ACTIONS(1993), 1, + anon_sym_RBRACE, + STATE(1369), 1, + sym_string, + STATE(1373), 1, + sym_template_string, + STATE(1498), 1, + sym_match_key_value_pattern, + STATE(1553), 1, + sym_match_double_star_pattern, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1652), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + [59522] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1768), 1, + anon_sym_not, + ACTIONS(1776), 1, + anon_sym_is, + ACTIONS(1942), 1, + anon_sym_EQ, + STATE(1001), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1774), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1756), 6, + anon_sym_in, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + ACTIONS(1940), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_and, + anon_sym_or, + anon_sym_SEMI, + [59559] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1184), 19, + ACTIONS(1995), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -72827,42 +74160,54 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [58449] = 4, + [59584] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1962), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(1173), 14, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_GT_GT, - anon_sym_PIPE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1884), 1, anon_sym_DASH, - anon_sym_PLUS, - anon_sym_LBRACK, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1987), 1, + sym_identifier, + ACTIONS(1991), 1, anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LT_LT, - [58478] = 4, + ACTIONS(1997), 1, + anon_sym_RBRACE, + STATE(1369), 1, + sym_string, + STATE(1373), 1, + sym_template_string, + STATE(1555), 1, + sym_match_double_star_pattern, + STATE(1557), 1, + sym_match_key_value_pattern, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1652), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + [59637] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(265), 2, + ACTIONS(272), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(911), 3, + ACTIONS(928), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - ACTIONS(298), 14, + ACTIONS(303), 14, anon_sym_DOT, anon_sym_LPAREN, anon_sym_GT_GT, @@ -72877,68 +74222,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - [58507] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1807), 1, - anon_sym_not, - ACTIONS(1815), 1, - anon_sym_is, - ACTIONS(1933), 1, - anon_sym_EQ, - STATE(1003), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1813), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1795), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1931), 7, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_and, - anon_sym_or, - anon_sym_SEMI, - [58544] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1908), 1, - anon_sym_EQ, - ACTIONS(1967), 1, - anon_sym_not, - ACTIONS(1973), 1, - anon_sym_is, - STATE(1003), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1970), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1964), 6, - anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1903), 7, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_and, - anon_sym_or, - anon_sym_SEMI, - [58581] = 2, + [59666] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1976), 19, + ACTIONS(1999), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -72958,78 +74245,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [58606] = 2, + [59691] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1978), 19, + ACTIONS(1209), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(2001), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - anon_sym_in, - anon_sym_RBRACK, - anon_sym_EQ, - anon_sym_PLUS_EQ, - anon_sym_DASH_EQ, - anon_sym_STAR_EQ, - anon_sym_SLASH_EQ, - anon_sym_AT_EQ, - anon_sym_SLASH_SLASH_EQ, - anon_sym_PERCENT_EQ, - anon_sym_STAR_STAR_EQ, - anon_sym_GT_GT_EQ, - anon_sym_LT_LT_EQ, - anon_sym_AMP_EQ, - anon_sym_CARET_EQ, - anon_sym_PIPE_EQ, - [58631] = 8, + ACTIONS(1204), 14, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_GT_GT, + anon_sym_PIPE, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_STAR_STAR, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + [59720] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1744), 1, + ACTIONS(1792), 1, anon_sym_not, - ACTIONS(1752), 1, + ACTIONS(1800), 1, anon_sym_is, - ACTIONS(1933), 1, - anon_sym_EQ, - STATE(995), 1, + STATE(1015), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1750), 2, + ACTIONS(1798), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1732), 6, + ACTIONS(1782), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1931), 7, + ACTIONS(1940), 8, anon_sym_COMMA, anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [58668] = 7, + [59755] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1983), 1, + ACTIONS(2006), 1, anon_sym_not, - ACTIONS(1989), 1, + ACTIONS(2012), 1, anon_sym_is, - STATE(1007), 1, + STATE(1015), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1986), 2, + ACTIONS(2009), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1980), 6, + ACTIONS(2003), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1903), 8, + ACTIONS(1924), 8, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, @@ -73038,63 +74326,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [58703] = 16, - ACTIONS(3), 1, - sym_comment, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1940), 1, - sym_identifier, - ACTIONS(1944), 1, - anon_sym_STAR_STAR, - ACTIONS(1992), 1, - anon_sym_RBRACE, - STATE(1317), 1, - sym_string, - STATE(1318), 1, - sym_template_string, - STATE(1544), 1, - sym_match_double_star_pattern, - STATE(1573), 1, - sym_match_key_value_pattern, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1722), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - [58756] = 7, + [59790] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1839), 1, + ACTIONS(1860), 1, anon_sym_not, - ACTIONS(1847), 1, + ACTIONS(1868), 1, anon_sym_is, - STATE(1011), 1, + STATE(1019), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1845), 2, + ACTIONS(1866), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1827), 6, + ACTIONS(1848), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1931), 7, + ACTIONS(1940), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -73102,14 +74353,47 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_and, anon_sym_or, - [58790] = 4, + [59824] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1554), 1, + anon_sym_DOT, + ACTIONS(1556), 1, + anon_sym_LPAREN, + ACTIONS(1566), 1, + anon_sym_PIPE, + ACTIONS(1570), 1, + anon_sym_LBRACK, + ACTIONS(1572), 1, + anon_sym_STAR_STAR, + ACTIONS(1580), 1, + anon_sym_AMP, + ACTIONS(1582), 1, + anon_sym_CARET, + ACTIONS(1560), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1562), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1568), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(708), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1576), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + [59870] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1994), 1, + ACTIONS(2015), 1, anon_sym_COMMA, - STATE(993), 1, + STATE(1000), 1, aux_sym__patterns_repeat1, - ACTIONS(1996), 16, + ACTIONS(2017), 16, anon_sym_COLON, anon_sym_in, anon_sym_EQ, @@ -73126,26 +74410,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [58818] = 7, + [59898] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2001), 1, + ACTIONS(2022), 1, anon_sym_not, - ACTIONS(2007), 1, + ACTIONS(2028), 1, anon_sym_is, - STATE(1011), 1, + STATE(1019), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(2004), 2, + ACTIONS(2025), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1998), 6, + ACTIONS(2019), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1903), 7, + ACTIONS(1924), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -73153,51 +74437,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_and, anon_sym_or, - [58852] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1593), 1, - anon_sym_DOT, - ACTIONS(1595), 1, - anon_sym_LPAREN, - ACTIONS(1605), 1, - anon_sym_PIPE, - ACTIONS(1609), 1, - anon_sym_LBRACK, - ACTIONS(1611), 1, - anon_sym_STAR_STAR, - ACTIONS(1619), 1, - anon_sym_AMP, - ACTIONS(1621), 1, - anon_sym_CARET, - ACTIONS(1599), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1601), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1607), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(733), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1615), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - [58898] = 6, + [59932] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(2031), 1, anon_sym_COMMA, - ACTIONS(2012), 1, + ACTIONS(2033), 1, anon_sym_COLON, - ACTIONS(2014), 1, + ACTIONS(2035), 1, anon_sym_EQ, - STATE(1010), 1, + STATE(1018), 1, aux_sym__patterns_repeat1, - ACTIONS(2016), 13, + ACTIONS(2037), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -73211,318 +74462,291 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [58929] = 12, + [59963] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2024), 1, + ACTIONS(2045), 1, anon_sym_COLON, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1593), 1, - sym_lambda_parameters, - STATE(1598), 1, + STATE(1689), 1, sym__parameters, - STATE(1520), 2, + STATE(1691), 1, + sym_lambda_parameters, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [58972] = 12, + [60006] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2030), 1, + ACTIONS(2051), 1, anon_sym_COLON, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1598), 1, + STATE(1689), 1, sym__parameters, - STATE(1690), 1, + STATE(1752), 1, sym_lambda_parameters, - STATE(1520), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59015] = 12, + [60049] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2032), 1, + ACTIONS(2053), 1, anon_sym_COLON, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1598), 1, - sym__parameters, - STATE(1668), 1, + STATE(1639), 1, sym_lambda_parameters, - STATE(1520), 2, + STATE(1689), 1, + sym__parameters, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59058] = 12, + [60092] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2034), 1, + ACTIONS(2055), 1, anon_sym_COLON, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1598), 1, + STATE(1689), 1, sym__parameters, - STATE(1604), 1, + STATE(1729), 1, sym_lambda_parameters, - STATE(1520), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59101] = 12, + [60135] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2036), 1, + ACTIONS(2057), 1, anon_sym_COLON, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1598), 1, - sym__parameters, - STATE(1673), 1, + STATE(1667), 1, sym_lambda_parameters, - STATE(1520), 2, + STATE(1689), 1, + sym__parameters, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59144] = 12, + [60178] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2038), 1, + ACTIONS(2059), 1, anon_sym_COLON, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1598), 1, + STATE(1689), 1, sym__parameters, - STATE(1682), 1, + STATE(1697), 1, sym_lambda_parameters, - STATE(1520), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59187] = 12, + [60221] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2040), 1, + ACTIONS(2061), 1, anon_sym_COLON, - STATE(1385), 1, + STATE(1406), 1, sym_parameter, - STATE(1598), 1, + STATE(1689), 1, sym__parameters, - STATE(1711), 1, + STATE(1732), 1, sym_lambda_parameters, - STATE(1520), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59230] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(1861), 1, - anon_sym_DASH, - ACTIONS(1869), 1, - sym_integer, - ACTIONS(1871), 1, - sym_float, - ACTIONS(1940), 1, - sym_identifier, - STATE(1317), 1, - sym_string, - STATE(1318), 1, - sym_template_string, - STATE(1573), 1, - sym_match_key_value_pattern, - STATE(1140), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1722), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1873), 3, - sym_true, - sym_false, - sym_none, - [59274] = 11, + [60264] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2042), 1, + ACTIONS(2063), 1, sym_identifier, - ACTIONS(2044), 1, + ACTIONS(2065), 1, anon_sym_RPAREN, - STATE(1428), 1, + STATE(1445), 1, sym_parameter, - STATE(1684), 1, + STATE(1682), 1, sym__parameters, - STATE(1442), 2, + STATE(1507), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59314] = 10, + [60304] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1884), 1, + anon_sym_DASH, + ACTIONS(1892), 1, + sym_integer, + ACTIONS(1894), 1, + sym_float, + ACTIONS(1987), 1, sym_identifier, - ACTIONS(2020), 1, - anon_sym_LPAREN, - ACTIONS(2022), 1, - anon_sym_STAR, - ACTIONS(2026), 1, - anon_sym_STAR_STAR, - ACTIONS(2028), 1, - anon_sym_SLASH, - ACTIONS(2046), 1, - anon_sym_COLON, - STATE(1444), 1, - sym_parameter, - STATE(1520), 2, - sym_list_splat_pattern, - sym_dictionary_splat_pattern, - STATE(1394), 6, - sym_tuple_pattern, - sym_default_parameter, - sym_typed_default_parameter, - sym_typed_parameter, - sym_positional_separator, - sym_keyword_separator, - [59351] = 4, + STATE(1369), 1, + sym_string, + STATE(1373), 1, + sym_template_string, + STATE(1557), 1, + sym_match_key_value_pattern, + STATE(1116), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1652), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1896), 3, + sym_true, + sym_false, + sym_none, + [60348] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2012), 1, + ACTIONS(2033), 1, anon_sym_COLON, - ACTIONS(2014), 1, + ACTIONS(2035), 1, anon_sym_EQ, - ACTIONS(2016), 13, + ACTIONS(2037), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -73536,143 +74760,170 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [59376] = 10, + [60373] = 10, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2041), 1, + anon_sym_LPAREN, + ACTIONS(2043), 1, + anon_sym_STAR, + ACTIONS(2047), 1, + anon_sym_STAR_STAR, + ACTIONS(2049), 1, + anon_sym_SLASH, + ACTIONS(2063), 1, + sym_identifier, + ACTIONS(2067), 1, + anon_sym_RPAREN, + STATE(1437), 1, + sym_parameter, + STATE(1507), 2, + sym_list_splat_pattern, + sym_dictionary_splat_pattern, + STATE(1410), 6, + sym_tuple_pattern, + sym_default_parameter, + sym_typed_default_parameter, + sym_typed_parameter, + sym_positional_separator, + sym_keyword_separator, + [60410] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2048), 1, + ACTIONS(2067), 1, anon_sym_COLON, - STATE(1444), 1, + STATE(1437), 1, sym_parameter, - STATE(1520), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59413] = 10, + [60447] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2042), 1, + ACTIONS(2063), 1, sym_identifier, - ACTIONS(2048), 1, + ACTIONS(2069), 1, anon_sym_RPAREN, - STATE(1444), 1, + STATE(1437), 1, sym_parameter, - STATE(1442), 2, + STATE(1507), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59450] = 10, + [60484] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2020), 1, + ACTIONS(2039), 1, + sym_identifier, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2042), 1, - sym_identifier, - ACTIONS(2046), 1, - anon_sym_RPAREN, - STATE(1444), 1, + ACTIONS(2069), 1, + anon_sym_COLON, + STATE(1437), 1, sym_parameter, - STATE(1442), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59487] = 9, + [60521] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - ACTIONS(2042), 1, + ACTIONS(2063), 1, sym_identifier, - STATE(1444), 1, + STATE(1437), 1, sym_parameter, - STATE(1442), 2, + STATE(1507), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59521] = 9, + [60555] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(2018), 1, + ACTIONS(2039), 1, sym_identifier, - ACTIONS(2020), 1, + ACTIONS(2041), 1, anon_sym_LPAREN, - ACTIONS(2022), 1, + ACTIONS(2043), 1, anon_sym_STAR, - ACTIONS(2026), 1, + ACTIONS(2047), 1, anon_sym_STAR_STAR, - ACTIONS(2028), 1, + ACTIONS(2049), 1, anon_sym_SLASH, - STATE(1444), 1, + STATE(1437), 1, sym_parameter, - STATE(1520), 2, + STATE(1606), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1394), 6, + STATE(1410), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [59555] = 3, + [60589] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2052), 1, + ACTIONS(1574), 1, anon_sym_as, - ACTIONS(2050), 12, + ACTIONS(1558), 12, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -73685,12 +74936,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, anon_sym_and, anon_sym_or, - [59576] = 3, + [60610] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1613), 1, + ACTIONS(2073), 1, anon_sym_as, - ACTIONS(1597), 12, + ACTIONS(2071), 12, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -73703,14 +74954,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, anon_sym_and, anon_sym_or, - [59597] = 4, + [60631] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2056), 1, + ACTIONS(2077), 1, anon_sym_DOT, - STATE(1032), 1, + STATE(1039), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2054), 10, + ACTIONS(2075), 10, anon_sym_import, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73721,146 +74972,63 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [59619] = 9, - ACTIONS(2059), 1, + [60653] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2067), 1, + ACTIONS(2088), 1, sym__string_end, - STATE(1052), 1, + STATE(1056), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [59650] = 12, + [60684] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2071), 1, + ACTIONS(2092), 1, anon_sym_if, - ACTIONS(2073), 1, + ACTIONS(2094), 1, anon_sym_COLON, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2079), 1, + ACTIONS(2100), 1, anon_sym_RBRACE, - ACTIONS(2081), 1, + ACTIONS(2102), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2104), 1, anon_sym_or, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1627), 1, + STATE(1676), 1, sym__comprehension_clauses, - [59687] = 9, - ACTIONS(2059), 1, - anon_sym_LBRACE2, - ACTIONS(2063), 1, - anon_sym_BSLASH, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2085), 1, - sym__string_end, - STATE(1043), 1, - aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, - sym_string_content, - STATE(1147), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2061), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [59718] = 9, - ACTIONS(2059), 1, - anon_sym_LBRACE2, - ACTIONS(2063), 1, - anon_sym_BSLASH, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2087), 1, - sym__string_end, - STATE(1052), 1, - aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, - sym_string_content, - STATE(1147), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2061), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [59749] = 9, - ACTIONS(2059), 1, - anon_sym_LBRACE2, - ACTIONS(2063), 1, - anon_sym_BSLASH, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2089), 1, - sym__string_end, - STATE(1036), 1, - aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, - sym_string_content, - STATE(1147), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2061), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [59780] = 5, + [60721] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2091), 1, + ACTIONS(2106), 1, anon_sym_DOT, - ACTIONS(2093), 1, + ACTIONS(2108), 1, anon_sym_LPAREN, - STATE(1042), 1, + STATE(1064), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2095), 8, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [59803] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(647), 1, - sym__string_start, - STATE(744), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(2097), 8, + ACTIONS(2110), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -73869,58 +75037,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [59824] = 4, + [60744] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(649), 1, + ACTIONS(666), 1, sym__template_string_start, - STATE(745), 2, + STATE(750), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(2097), 8, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [59845] = 12, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2075), 1, - anon_sym_async, - ACTIONS(2077), 1, - anon_sym_for, - ACTIONS(2099), 1, - anon_sym_RPAREN, - ACTIONS(2101), 1, - anon_sym_COMMA, - ACTIONS(2104), 1, - anon_sym_as, - ACTIONS(2106), 1, - anon_sym_if, - ACTIONS(2108), 1, - anon_sym_and, - ACTIONS(2110), 1, - anon_sym_or, - STATE(1100), 1, - sym_for_in_clause, - STATE(1270), 1, - aux_sym__collection_elements_repeat1, - STATE(1706), 1, - sym__comprehension_clauses, - [59882] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2091), 1, - anon_sym_DOT, - ACTIONS(2112), 1, - anon_sym_LPAREN, - STATE(1032), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2114), 8, + ACTIONS(2112), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -73929,145 +75054,214 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [59905] = 9, - ACTIONS(2059), 1, + [60765] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2116), 1, + ACTIONS(2114), 1, sym__string_end, - STATE(1052), 1, + STATE(1046), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [59936] = 9, - ACTIONS(2059), 1, + [60796] = 9, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2116), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2122), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2118), 1, + ACTIONS(2125), 1, sym__string_end, - STATE(1047), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2119), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [59967] = 9, - ACTIONS(2059), 1, + [60827] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2120), 1, + ACTIONS(2127), 1, sym__string_end, - STATE(1048), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [59998] = 12, + [60858] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2071), 1, + ACTIONS(2092), 1, anon_sym_if, - ACTIONS(2073), 1, + ACTIONS(2094), 1, anon_sym_COLON, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2079), 1, + ACTIONS(2100), 1, anon_sym_RBRACE, - ACTIONS(2081), 1, + ACTIONS(2102), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2104), 1, anon_sym_or, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1645), 1, + STATE(1728), 1, sym__comprehension_clauses, - [60035] = 9, - ACTIONS(2059), 1, + [60895] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2129), 1, + anon_sym_RPAREN, + ACTIONS(2131), 1, + anon_sym_COMMA, + ACTIONS(2134), 1, + anon_sym_as, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, + anon_sym_and, + ACTIONS(2140), 1, + anon_sym_or, + STATE(1106), 1, + sym_for_in_clause, + STATE(1310), 1, + aux_sym__collection_elements_repeat1, + STATE(1711), 1, + sym__comprehension_clauses, + [60932] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2122), 1, + ACTIONS(2142), 1, sym__string_end, - STATE(1052), 1, + STATE(1051), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60066] = 9, - ACTIONS(2059), 1, + [60963] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2124), 1, + ACTIONS(2144), 1, sym__string_end, STATE(1052), 1, aux_sym_string_repeat1, - STATE(1245), 1, + STATE(1248), 1, + sym_string_content, + STATE(1252), 1, sym_interpolation, + STATE(1149), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2082), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [60994] = 9, + ACTIONS(2080), 1, + anon_sym_LBRACE2, + ACTIONS(2084), 1, + anon_sym_BSLASH, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2146), 1, + sym__string_end, + STATE(1045), 1, + aux_sym_string_repeat1, + STATE(1248), 1, + sym_string_content, STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2082), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [61025] = 9, + ACTIONS(2080), 1, + anon_sym_LBRACE2, + ACTIONS(2084), 1, + anon_sym_BSLASH, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2148), 1, + sym__string_end, + STATE(1045), 1, + aux_sym_string_repeat1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60097] = 2, + [61056] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2054), 11, + ACTIONS(2075), 11, anon_sym_import, anon_sym_DOT, anon_sym_LPAREN, @@ -74079,286 +75273,341 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [60114] = 9, - ACTIONS(2059), 1, + [61073] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2126), 1, + ACTIONS(2150), 1, sym__string_end, - STATE(1053), 1, + STATE(1057), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60145] = 9, - ACTIONS(2059), 1, + [61104] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2128), 1, + ACTIONS(2152), 1, sym__string_end, - STATE(1054), 1, + STATE(1058), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60176] = 9, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2130), 1, + [61135] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2136), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2139), 1, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2154), 1, sym__string_end, - STATE(1052), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2133), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60207] = 9, - ACTIONS(2059), 1, + [61166] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2141), 1, + ACTIONS(2156), 1, sym__string_end, - STATE(1052), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60238] = 9, - ACTIONS(2059), 1, + [61197] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2143), 1, + ACTIONS(2158), 1, sym__string_end, - STATE(1052), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60269] = 9, - ACTIONS(2059), 1, + [61228] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2145), 1, + ACTIONS(2160), 1, sym__string_end, - STATE(1057), 1, + STATE(1065), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60300] = 9, - ACTIONS(2059), 1, + [61259] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2147), 1, + ACTIONS(2162), 1, sym__string_end, - STATE(1058), 1, + STATE(1062), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60331] = 9, - ACTIONS(2059), 1, + [61290] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2149), 1, + ACTIONS(2164), 1, sym__string_end, - STATE(1052), 1, + STATE(1066), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60362] = 9, - ACTIONS(2059), 1, + [61321] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2151), 1, + ACTIONS(2166), 1, sym__string_end, - STATE(1052), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, + STATE(1248), 1, + sym_string_content, STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2082), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [61352] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2092), 1, + anon_sym_if, + ACTIONS(2094), 1, + anon_sym_COLON, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, + anon_sym_RBRACE, + ACTIONS(2102), 1, + anon_sym_and, + ACTIONS(2104), 1, + anon_sym_or, + STATE(1106), 1, + sym_for_in_clause, + STATE(1310), 1, + aux_sym__collection_elements_repeat1, + STATE(1695), 1, + sym__comprehension_clauses, + [61389] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2106), 1, + anon_sym_DOT, + ACTIONS(2168), 1, + anon_sym_LPAREN, + STATE(1039), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2170), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [61412] = 9, + ACTIONS(2080), 1, + anon_sym_LBRACE2, + ACTIONS(2084), 1, + anon_sym_BSLASH, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2172), 1, + sym__string_end, + STATE(1045), 1, + aux_sym_string_repeat1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60393] = 9, - ACTIONS(2059), 1, + [61443] = 9, + ACTIONS(2080), 1, anon_sym_LBRACE2, - ACTIONS(2063), 1, + ACTIONS(2084), 1, anon_sym_BSLASH, - ACTIONS(2065), 1, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2153), 1, + ACTIONS(2174), 1, sym__string_end, - STATE(1033), 1, + STATE(1045), 1, aux_sym_string_repeat1, - STATE(1245), 1, - sym_interpolation, - STATE(1252), 1, + STATE(1248), 1, sym_string_content, - STATE(1147), 2, + STATE(1252), 1, + sym_interpolation, + STATE(1149), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2061), 3, + ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60424] = 12, + [61474] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2071), 1, + ACTIONS(2092), 1, anon_sym_if, - ACTIONS(2073), 1, + ACTIONS(2094), 1, anon_sym_COLON, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2079), 1, + ACTIONS(2100), 1, anon_sym_RBRACE, - ACTIONS(2081), 1, + ACTIONS(2102), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2104), 1, anon_sym_or, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1649), 1, + STATE(1717), 1, sym__comprehension_clauses, - [60461] = 12, + [61511] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(664), 1, + sym__string_start, + STATE(749), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(2112), 8, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2071), 1, + anon_sym_as, anon_sym_if, - ACTIONS(2073), 1, anon_sym_COLON, - ACTIONS(2075), 1, - anon_sym_async, - ACTIONS(2077), 1, - anon_sym_for, - ACTIONS(2079), 1, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, - ACTIONS(2081), 1, - anon_sym_and, - ACTIONS(2083), 1, - anon_sym_or, - STATE(1100), 1, - sym_for_in_clause, - STATE(1270), 1, - aux_sym__collection_elements_repeat1, - STATE(1715), 1, - sym__comprehension_clauses, - [60498] = 5, + [61532] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, - anon_sym_or, - ACTIONS(2157), 1, + ACTIONS(2178), 1, anon_sym_as, - ACTIONS(2155), 7, + ACTIONS(2176), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74366,12 +75615,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [60520] = 3, + anon_sym_or, + [61552] = 11, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, + anon_sym_and, + ACTIONS(2140), 1, + anon_sym_or, + ACTIONS(2180), 1, + anon_sym_RPAREN, + STATE(1106), 1, + sym_for_in_clause, + STATE(1310), 1, + aux_sym__collection_elements_repeat1, + STATE(1628), 1, + sym__comprehension_clauses, + [61586] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2159), 9, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2176), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74380,264 +75655,320 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, - anon_sym_or, - [60538] = 6, + [61606] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2165), 1, + ACTIONS(2188), 1, anon_sym_as, - ACTIONS(2163), 6, + ACTIONS(2186), 6, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [60562] = 4, + [61630] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2159), 8, + ACTIONS(2192), 1, + anon_sym_as, + ACTIONS(2190), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_else, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - [60582] = 11, + [61652] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2106), 1, + ACTIONS(2129), 1, + anon_sym_RPAREN, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2169), 1, - anon_sym_RPAREN, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1686), 1, + STATE(1711), 1, sym__comprehension_clauses, - [60616] = 11, + [61686] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2171), 1, + ACTIONS(2194), 1, anon_sym_RPAREN, - ACTIONS(2173), 1, + ACTIONS(2196), 1, anon_sym_COMMA, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1451), 1, + STATE(1476), 1, aux_sym_argument_list_repeat1, - STATE(1686), 1, + STATE(1673), 1, sym__comprehension_clauses, - [60650] = 4, + [61720] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2175), 1, - anon_sym_as, - ACTIONS(2159), 8, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2186), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_or, - [60670] = 5, + anon_sym_EQ, + [61742] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2175), 1, + ACTIONS(2202), 1, anon_sym_as, - ACTIONS(2159), 7, + ACTIONS(2200), 6, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [60692] = 5, + [61766] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2206), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(2204), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, - ACTIONS(2177), 7, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [61784] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2210), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(2208), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, anon_sym_COLON, - anon_sym_else, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - [60714] = 5, + [61802] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, + anon_sym_RBRACK, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2181), 7, + STATE(1106), 1, + sym_for_in_clause, + STATE(1310), 1, + aux_sym__collection_elements_repeat1, + STATE(1754), 1, + sym__comprehension_clauses, + [61836] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2212), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, anon_sym_COLON, anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, - [60736] = 3, + [61856] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2185), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(2183), 8, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, + anon_sym_and, + ACTIONS(2140), 1, + anon_sym_or, + ACTIONS(2216), 1, + anon_sym_as, + ACTIONS(2214), 6, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + [61880] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2138), 1, + anon_sym_and, + ACTIONS(2140), 1, + anon_sym_or, + ACTIONS(2178), 1, anon_sym_as, + ACTIONS(2176), 7, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [60754] = 11, + [61902] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2187), 1, + ACTIONS(2218), 1, anon_sym_RPAREN, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1613), 1, + STATE(1673), 1, sym__comprehension_clauses, - [60788] = 6, + [61936] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, - anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2189), 1, - anon_sym_as, - ACTIONS(2177), 6, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2200), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [60812] = 11, + anon_sym_EQ, + [61958] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2191), 1, + ACTIONS(2220), 1, anon_sym_RPAREN, - ACTIONS(2193), 1, - anon_sym_COMMA, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1418), 1, - aux_sym_argument_list_repeat1, - STATE(1706), 1, + STATE(1310), 1, + aux_sym__collection_elements_repeat1, + STATE(1618), 1, sym__comprehension_clauses, - [60846] = 11, + [61992] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2195), 1, + ACTIONS(2222), 1, anon_sym_RPAREN, - ACTIONS(2197), 1, + ACTIONS(2224), 1, anon_sym_COMMA, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1483), 1, + STATE(1441), 1, aux_sym_argument_list_repeat1, - STATE(1592), 1, + STATE(1628), 1, sym__comprehension_clauses, - [60880] = 4, + [62026] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2199), 8, + ACTIONS(2190), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74646,204 +75977,209 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, - [60900] = 3, + [62046] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2203), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(2201), 8, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2214), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [60918] = 11, + anon_sym_EQ, + [62068] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2099), 1, - anon_sym_RPAREN, - ACTIONS(2106), 1, + ACTIONS(2100), 1, + anon_sym_RBRACK, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1706), 1, + STATE(1713), 1, sym__comprehension_clauses, - [60952] = 11, + [62102] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, - anon_sym_async, - ACTIONS(2077), 1, - anon_sym_for, - ACTIONS(2106), 1, - anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2205), 1, + ACTIONS(2226), 1, + anon_sym_as, + ACTIONS(2212), 7, anon_sym_RPAREN, - ACTIONS(2207), 1, anon_sym_COMMA, - STATE(1100), 1, - sym_for_in_clause, - STATE(1437), 1, - aux_sym_argument_list_repeat1, - STATE(1613), 1, - sym__comprehension_clauses, - [60986] = 11, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62124] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2079), 1, + ACTIONS(2100), 1, anon_sym_RBRACK, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1624), 1, + STATE(1675), 1, sym__comprehension_clauses, - [61020] = 5, + [62158] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2163), 7, + ACTIONS(2228), 1, anon_sym_RPAREN, + ACTIONS(2230), 1, anon_sym_COMMA, - anon_sym_COLON, - anon_sym_else, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - [61042] = 11, + STATE(1106), 1, + sym_for_in_clause, + STATE(1459), 1, + aux_sym_argument_list_repeat1, + STATE(1711), 1, + sym__comprehension_clauses, + [62192] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, - anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2079), 1, - anon_sym_RBRACK, - ACTIONS(2106), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - STATE(1100), 1, + ACTIONS(2232), 1, + anon_sym_RPAREN, + ACTIONS(2234), 1, + anon_sym_COMMA, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, - aux_sym__collection_elements_repeat1, - STATE(1677), 1, + STATE(1526), 1, + aux_sym_argument_list_repeat1, + STATE(1618), 1, sym__comprehension_clauses, - [61076] = 11, + [62226] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2106), 1, + ACTIONS(2100), 1, + anon_sym_RBRACK, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2209), 1, - anon_sym_RPAREN, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1270), 1, + STATE(1310), 1, aux_sym__collection_elements_repeat1, - STATE(1592), 1, + STATE(1722), 1, sym__comprehension_clauses, - [61110] = 6, + [62260] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2176), 9, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2108), 1, + anon_sym_COLON, + anon_sym_else, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_or, + [62278] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2211), 1, - anon_sym_as, - ACTIONS(2181), 6, + ACTIONS(2236), 7, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61134] = 11, + [62297] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2136), 1, + anon_sym_if, + ACTIONS(2138), 1, + anon_sym_and, + ACTIONS(2140), 1, + anon_sym_or, + ACTIONS(2238), 6, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2075), 1, anon_sym_async, - ACTIONS(2077), 1, anon_sym_for, - ACTIONS(2079), 1, anon_sym_RBRACK, - ACTIONS(2106), 1, - anon_sym_if, - ACTIONS(2108), 1, - anon_sym_and, - ACTIONS(2110), 1, - anon_sym_or, - STATE(1100), 1, - sym_for_in_clause, - STATE(1270), 1, - aux_sym__collection_elements_repeat1, - STATE(1708), 1, - sym__comprehension_clauses, - [61168] = 5, + anon_sym_RBRACE, + [62318] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2213), 1, - anon_sym_as, - ACTIONS(2199), 7, + ACTIONS(2236), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74851,53 +76187,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61190] = 11, + [62337] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, - anon_sym_COMMA, - ACTIONS(2075), 1, + ACTIONS(2242), 1, + anon_sym_if, + ACTIONS(2245), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2248), 1, anon_sym_for, - ACTIONS(2079), 1, + ACTIONS(2240), 3, + anon_sym_RPAREN, anon_sym_RBRACK, - ACTIONS(2106), 1, - anon_sym_if, - ACTIONS(2108), 1, - anon_sym_and, - ACTIONS(2110), 1, - anon_sym_or, - STATE(1100), 1, + anon_sym_RBRACE, + STATE(1100), 3, sym_for_in_clause, - STATE(1270), 1, - aux_sym__collection_elements_repeat1, - STATE(1614), 1, - sym__comprehension_clauses, - [61224] = 4, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [62360] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2155), 8, + ACTIONS(2253), 1, + anon_sym_PIPE, + STATE(1105), 1, + aux_sym_match_or_pattern_repeat1, + ACTIONS(2251), 7, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62379] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2257), 1, + anon_sym_PIPE, + STATE(1102), 1, + aux_sym_match_or_pattern_repeat1, + ACTIONS(2255), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, + [62398] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2260), 1, + anon_sym_COMMA, + ACTIONS(2262), 1, + anon_sym_if, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + STATE(1274), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2264), 4, + anon_sym_RBRACE, anon_sym_EQ, - [61244] = 4, + anon_sym_COLON2, + sym_type_conversion, + [62423] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2215), 7, + ACTIONS(2236), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74905,14 +76267,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61263] = 4, + [62442] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2219), 1, + ACTIONS(2253), 1, anon_sym_PIPE, - STATE(1101), 1, + STATE(1102), 1, aux_sym_match_or_pattern_repeat1, - ACTIONS(2217), 7, + ACTIONS(2270), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -74920,98 +76282,170 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [61282] = 6, + [62461] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2223), 1, - anon_sym_if, - ACTIONS(2226), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2229), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2221), 3, + ACTIONS(2274), 1, + anon_sym_if, + ACTIONS(2272), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1092), 3, + STATE(1108), 3, sym_for_in_clause, sym_if_clause, aux_sym__comprehension_clauses_repeat1, - [61305] = 7, + [62484] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2232), 1, + ACTIONS(2260), 1, anon_sym_COMMA, - ACTIONS(2234), 1, + ACTIONS(2262), 1, anon_sym_if, - ACTIONS(2238), 1, + ACTIONS(2266), 1, anon_sym_and, - ACTIONS(2240), 1, + ACTIONS(2268), 1, anon_sym_or, - STATE(1215), 1, + STATE(1274), 1, aux_sym_expression_list_repeat1, - ACTIONS(2236), 4, + ACTIONS(2276), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [61330] = 4, + [62509] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2274), 1, + anon_sym_if, + ACTIONS(2278), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1100), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [62532] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2215), 7, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2238), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + [62553] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61349] = 7, + [62567] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2232), 1, + ACTIONS(2282), 8, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2234), 1, + anon_sym_as, anon_sym_if, - ACTIONS(2238), 1, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62581] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2240), 1, + ACTIONS(2286), 1, anon_sym_or, - STATE(1215), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2242), 4, - anon_sym_RBRACE, + ACTIONS(2176), 6, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [61374] = 5, + anon_sym_SEMI, + [62599] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2290), 1, + anon_sym_COMMA, + STATE(1113), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2288), 6, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62617] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2293), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62631] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2190), 6, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2244), 6, + anon_sym_EQ, + anon_sym_SEMI, + [62649] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2112), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - [61395] = 4, + [62663] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2248), 1, + ACTIONS(2297), 1, anon_sym_PIPE, - STATE(1097), 1, - aux_sym_match_or_pattern_repeat1, - ACTIONS(2246), 7, + ACTIONS(2295), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75019,190 +76453,222 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [61414] = 4, + [62679] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2215), 7, - anon_sym_RPAREN, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2200), 5, + sym__newline, + anon_sym_from, anon_sym_COMMA, + anon_sym_EQ, + anon_sym_SEMI, + [62699] = 6, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2301), 1, + anon_sym_LBRACE2, + ACTIONS(2306), 1, + anon_sym_BSLASH, + ACTIONS(2309), 1, + sym__string_end, + STATE(1119), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2303), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [62721] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2262), 1, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2311), 5, + anon_sym_COMMA, anon_sym_RBRACE, - [61433] = 6, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [62741] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, - anon_sym_async, - ACTIONS(2077), 1, - anon_sym_for, - ACTIONS(2253), 1, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2299), 1, anon_sym_if, - ACTIONS(2251), 3, + ACTIONS(2186), 5, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + anon_sym_SEMI, + [62761] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2315), 1, + anon_sym_COMMA, + STATE(1113), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2313), 6, anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1092), 3, - sym_for_in_clause, - sym_if_clause, - aux_sym__comprehension_clauses_repeat1, - [61456] = 6, + [62779] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, - anon_sym_async, - ACTIONS(2077), 1, - anon_sym_for, - ACTIONS(2253), 1, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2212), 6, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2255), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1099), 3, - sym_for_in_clause, - sym_if_clause, - aux_sym__comprehension_clauses_repeat1, - [61479] = 4, + anon_sym_EQ, + anon_sym_SEMI, + [62797] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2219), 1, - anon_sym_PIPE, - STATE(1097), 1, - aux_sym_match_or_pattern_repeat1, - ACTIONS(2257), 7, + ACTIONS(2317), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_if, anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61498] = 5, + [62811] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2071), 1, - anon_sym_if, - ACTIONS(2081), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2181), 5, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2319), 5, + anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_RBRACK, anon_sym_RBRACE, - [61518] = 5, + [62831] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, + ACTIONS(1558), 8, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2238), 1, + anon_sym_EQ, anon_sym_and, - ACTIONS(2240), 1, anon_sym_or, - ACTIONS(2163), 5, + anon_sym_SEMI, + [62845] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2321), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [61538] = 4, + [62859] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2240), 1, - anon_sym_or, - ACTIONS(2155), 6, + ACTIONS(2323), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [61556] = 3, + [62873] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2159), 7, + ACTIONS(2071), 8, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_RBRACE, anon_sym_EQ, + anon_sym_and, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [61572] = 4, + anon_sym_SEMI, + [62887] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2240), 1, - anon_sym_or, - ACTIONS(2159), 6, + ACTIONS(2325), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [61590] = 5, + [62901] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, - anon_sym_if, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2240), 1, - anon_sym_or, - ACTIONS(2177), 5, + ACTIONS(1558), 8, anon_sym_COMMA, + anon_sym_if, anon_sym_RBRACE, anon_sym_EQ, + anon_sym_and, + anon_sym_or, anon_sym_COLON2, sym_type_conversion, - [61610] = 5, + [62915] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, - anon_sym_if, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2240), 1, - anon_sym_or, - ACTIONS(2181), 5, + ACTIONS(2327), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [61630] = 5, + [62929] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2181), 5, - sym__newline, - anon_sym_from, + ACTIONS(2329), 8, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_EQ, - anon_sym_SEMI, - [61650] = 2, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62943] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2265), 8, + ACTIONS(2331), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75211,56 +76677,93 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61664] = 4, + [62957] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2269), 1, + ACTIONS(2335), 1, anon_sym_COMMA, - STATE(1136), 1, + STATE(1173), 1, aux_sym_for_in_clause_repeat1, - ACTIONS(2267), 6, + ACTIONS(2333), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61682] = 5, + [62975] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, + ACTIONS(2255), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, - ACTIONS(2238), 1, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62989] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2240), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2244), 5, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2337), 1, + anon_sym_from, + ACTIONS(2339), 1, + anon_sym_COMMA, + STATE(1288), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2341), 2, + sym__newline, + anon_sym_SEMI, + [63015] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2343), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, + [63029] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2238), 5, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [61702] = 7, + anon_sym_SEMI, + [63049] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(67), 1, - anon_sym_AT, - ACTIONS(2271), 1, - anon_sym_async, - ACTIONS(2273), 1, - anon_sym_def, - ACTIONS(2275), 1, - anon_sym_class, - STATE(552), 2, - sym_function_definition, - sym_class_definition, - STATE(1248), 2, - sym_decorator, - aux_sym_decorated_definition_repeat1, - [61726] = 2, + ACTIONS(2345), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63063] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2277), 8, + ACTIONS(2347), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75269,10 +76772,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61740] = 2, + [63077] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2279), 8, + ACTIONS(2349), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75281,10 +76784,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61754] = 2, + [63091] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2246), 8, + ACTIONS(2351), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75293,42 +76796,95 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61768] = 5, + [63105] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2281), 5, + ACTIONS(2311), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [61788] = 7, + [63125] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2071), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_and, + anon_sym_or, + anon_sym_COLON2, + sym_type_conversion, + [63139] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(67), 1, + ACTIONS(69), 1, anon_sym_AT, - ACTIONS(2283), 1, + ACTIONS(2353), 1, anon_sym_async, - ACTIONS(2285), 1, + ACTIONS(2355), 1, anon_sym_def, - ACTIONS(2287), 1, + ACTIONS(2357), 1, anon_sym_class, - STATE(521), 2, + STATE(534), 2, sym_function_definition, sym_class_definition, - STATE(1248), 2, + STATE(1257), 2, sym_decorator, aux_sym_decorated_definition_repeat1, - [61812] = 2, + [63163] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2176), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_EQ, + anon_sym_or, + anon_sym_SEMI, + [63179] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2359), 8, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63193] = 6, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2361), 1, + anon_sym_LBRACE2, + ACTIONS(2365), 1, + anon_sym_BSLASH, + ACTIONS(2367), 1, + sym__string_end, + STATE(1119), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2363), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [63215] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2289), 8, + ACTIONS(2369), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75337,10 +76893,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61826] = 2, + [63229] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2291), 8, + ACTIONS(2371), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75349,55 +76905,94 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61840] = 3, + [63243] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2261), 1, + ACTIONS(2266), 1, anon_sym_and, - ACTIONS(2159), 7, - sym__newline, - anon_sym_from, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2212), 6, anon_sym_COMMA, anon_sym_if, + anon_sym_RBRACE, anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63261] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2102), 1, + anon_sym_and, + ACTIONS(2104), 1, anon_sym_or, - anon_sym_SEMI, - [61856] = 8, + ACTIONS(2212), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [63279] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, + ACTIONS(2092), 1, anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2102), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2104), 1, anon_sym_or, - ACTIONS(2293), 1, - anon_sym_from, - ACTIONS(2295), 1, + ACTIONS(2200), 5, anon_sym_COMMA, - STATE(1260), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2297), 2, - sym__newline, - anon_sym_SEMI, - [61882] = 4, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [63299] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2261), 1, + ACTIONS(2102), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2104), 1, anon_sym_or, - ACTIONS(2159), 6, - sym__newline, - anon_sym_from, + ACTIONS(2190), 6, anon_sym_COMMA, anon_sym_if, - anon_sym_EQ, - anon_sym_SEMI, - [61900] = 2, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [63317] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2102), 1, + anon_sym_and, + ACTIONS(2176), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_or, + [63333] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2102), 1, + anon_sym_and, + ACTIONS(2104), 1, + anon_sym_or, + ACTIONS(2176), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [63351] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2299), 8, + ACTIONS(2373), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75406,177 +77001,263 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61914] = 5, + [63365] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, + ACTIONS(2262), 1, anon_sym_if, - ACTIONS(2238), 1, + ACTIONS(2266), 1, anon_sym_and, - ACTIONS(2240), 1, + ACTIONS(2268), 1, anon_sym_or, - ACTIONS(2301), 5, + ACTIONS(2238), 5, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [61934] = 2, + [63385] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2303), 8, + ACTIONS(2106), 1, + anon_sym_DOT, + ACTIONS(2108), 1, + anon_sym_LPAREN, + ACTIONS(2375), 1, + anon_sym_EQ, + STATE(1064), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2110), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_if, - anon_sym_COLON, anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [61948] = 2, + [63407] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2305), 8, - anon_sym_RPAREN, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2214), 5, + sym__newline, + anon_sym_from, anon_sym_COMMA, - anon_sym_as, + anon_sym_EQ, + anon_sym_SEMI, + [63427] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2262), 1, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2200), 5, + anon_sym_COMMA, anon_sym_RBRACE, - [61962] = 4, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63447] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2309), 1, - anon_sym_COMMA, - STATE(1146), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2307), 6, - anon_sym_RPAREN, + ACTIONS(2092), 1, anon_sym_if, + ACTIONS(2102), 1, + anon_sym_and, + ACTIONS(2104), 1, + anon_sym_or, + ACTIONS(2214), 5, + anon_sym_COMMA, + anon_sym_COLON, anon_sym_async, anon_sym_for, - anon_sym_RBRACK, anon_sym_RBRACE, - [61980] = 2, + [63467] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1597), 8, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2190), 6, anon_sym_COMMA, anon_sym_if, anon_sym_RBRACE, anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63485] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2266), 1, anon_sym_and, + ACTIONS(2176), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_RBRACE, + anon_sym_EQ, anon_sym_or, anon_sym_COLON2, sym_type_conversion, - [61994] = 2, + [63501] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2311), 8, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, + ACTIONS(2092), 1, anon_sym_if, + ACTIONS(2102), 1, + anon_sym_and, + ACTIONS(2104), 1, + anon_sym_or, + ACTIONS(2186), 5, + anon_sym_COMMA, anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, + anon_sym_async, + anon_sym_for, anon_sym_RBRACE, - [62008] = 2, + [63521] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2313), 8, - anon_sym_RPAREN, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2176), 6, anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, anon_sym_RBRACE, - [62022] = 2, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63539] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2315), 8, - anon_sym_RPAREN, + ACTIONS(2262), 1, + anon_sym_if, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2214), 5, anon_sym_COMMA, - anon_sym_as, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63559] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2262), 1, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2319), 5, + anon_sym_COMMA, anon_sym_RBRACE, - [62036] = 6, - ACTIONS(2065), 1, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63579] = 5, + ACTIONS(3), 1, sym_comment, - ACTIONS(2317), 1, - anon_sym_LBRACE2, - ACTIONS(2322), 1, - anon_sym_BSLASH, - ACTIONS(2325), 1, - sym__string_end, - STATE(1133), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2319), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [62058] = 2, + ACTIONS(2262), 1, + anon_sym_if, + ACTIONS(2266), 1, + anon_sym_and, + ACTIONS(2268), 1, + anon_sym_or, + ACTIONS(2186), 5, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63599] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2327), 8, + ACTIONS(2138), 1, + anon_sym_and, + ACTIONS(2140), 1, + anon_sym_or, + ACTIONS(2377), 6, anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62072] = 2, + [63617] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2050), 8, - sym__newline, - anon_sym_from, + ACTIONS(69), 1, + anon_sym_AT, + ACTIONS(2379), 1, + anon_sym_async, + ACTIONS(2381), 1, + anon_sym_def, + ACTIONS(2383), 1, + anon_sym_class, + STATE(605), 2, + sym_function_definition, + sym_class_definition, + STATE(1257), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + [63641] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2387), 1, anon_sym_COMMA, + STATE(1113), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2385), 6, + anon_sym_RPAREN, anon_sym_if, - anon_sym_EQ, - anon_sym_and, - anon_sym_or, - anon_sym_SEMI, - [62086] = 4, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63659] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2331), 1, + ACTIONS(2391), 1, anon_sym_COMMA, - STATE(1162), 1, + STATE(1122), 1, aux_sym_for_in_clause_repeat1, - ACTIONS(2329), 6, + ACTIONS(2389), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62104] = 2, + [63677] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2333), 8, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + ACTIONS(2393), 1, + anon_sym_COMMA, + STATE(1243), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2276), 3, + anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - [62118] = 2, + [63701] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2335), 8, + ACTIONS(2395), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75585,6785 +77266,6758 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62132] = 6, + [63715] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2091), 1, - anon_sym_DOT, - ACTIONS(2093), 1, - anon_sym_LPAREN, - ACTIONS(2337), 1, - anon_sym_EQ, - STATE(1042), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2095), 4, - anon_sym_RPAREN, + ACTIONS(2397), 1, anon_sym_COMMA, + ACTIONS(2399), 1, anon_sym_as, - anon_sym_PIPE, - [62154] = 2, + ACTIONS(2401), 1, + anon_sym_if, + ACTIONS(2403), 1, + anon_sym_COLON, + ACTIONS(2405), 1, + anon_sym_and, + ACTIONS(2407), 1, + anon_sym_or, + STATE(1364), 1, + aux_sym_exception_list_repeat1, + [63740] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2097), 8, + ACTIONS(2409), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62168] = 5, + [63753] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2411), 4, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63772] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2413), 1, + sym_identifier, + ACTIONS(2415), 1, + anon_sym_LPAREN, + ACTIONS(2417), 1, + anon_sym_STAR, + STATE(1290), 1, + sym_dotted_name, + STATE(1327), 1, + sym_aliased_import, + STATE(1559), 1, + sym__import_list, + STATE(1561), 1, + sym_wildcard_import, + [63797] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2244), 5, - sym__newline, - anon_sym_from, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2339), 1, anon_sym_COMMA, - anon_sym_EQ, + STATE(1288), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2419), 2, + sym__newline, anon_sym_SEMI, - [62188] = 3, + [63820] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2341), 1, - anon_sym_PIPE, - ACTIONS(2339), 7, + ACTIONS(2401), 1, + anon_sym_if, + ACTIONS(2405), 1, + anon_sym_and, + ACTIONS(2407), 1, + anon_sym_or, + ACTIONS(2200), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_if, anon_sym_COLON, - anon_sym_RBRACK, + [63839] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2421), 1, + anon_sym_except, + ACTIONS(2423), 1, + anon_sym_finally, + STATE(540), 1, + sym_finally_clause, + STATE(266), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(283), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [63860] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2425), 1, + anon_sym_COMMA, + ACTIONS(2427), 1, anon_sym_RBRACE, - [62204] = 2, + STATE(1106), 1, + sym_for_in_clause, + STATE(1450), 1, + aux_sym_dictionary_repeat1, + STATE(1724), 1, + sym__comprehension_clauses, + [63885] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2343), 8, + ACTIONS(2413), 1, + sym_identifier, + ACTIONS(2417), 1, + anon_sym_STAR, + ACTIONS(2429), 1, + anon_sym_LPAREN, + STATE(1290), 1, + sym_dotted_name, + STATE(1327), 1, + sym_aliased_import, + STATE(1579), 1, + sym__import_list, + STATE(1580), 1, + sym_wildcard_import, + [63910] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2228), 1, anon_sym_RPAREN, + ACTIONS(2230), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62218] = 5, + STATE(1106), 1, + sym_for_in_clause, + STATE(1456), 1, + aux_sym_argument_list_repeat1, + STATE(1711), 1, + sym__comprehension_clauses, + [63935] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2431), 1, + anon_sym_RPAREN, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1618), 1, + sym__comprehension_clauses, + [63960] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, + ACTIONS(2401), 1, anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2177), 5, - sym__newline, - anon_sym_from, + ACTIONS(2214), 4, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_EQ, - anon_sym_SEMI, - [62238] = 4, + anon_sym_as, + anon_sym_COLON, + [63979] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2261), 1, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2199), 6, - sym__newline, - anon_sym_from, + ACTIONS(2190), 5, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_EQ, - anon_sym_SEMI, - [62256] = 4, + anon_sym_COLON, + [63996] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2347), 1, - anon_sym_COMMA, - STATE(1162), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2345), 6, + ACTIONS(2405), 1, + anon_sym_and, + ACTIONS(2176), 6, anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62274] = 6, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2349), 1, - anon_sym_LBRACE2, - ACTIONS(2353), 1, - anon_sym_BSLASH, - ACTIONS(2355), 1, - sym__string_end, - STATE(1133), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2351), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [62296] = 7, + anon_sym_COLON, + anon_sym_or, + [64011] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2299), 1, anon_sym_if, - ACTIONS(2357), 1, + ACTIONS(2339), 1, anon_sym_COMMA, - STATE(1232), 1, + STATE(1288), 1, aux_sym_expression_list_repeat1, - ACTIONS(2236), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62320] = 4, + ACTIONS(2433), 2, + sym__newline, + anon_sym_SEMI, + [64034] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2081), 1, + ACTIONS(2401), 1, + anon_sym_if, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2199), 6, + ACTIONS(2437), 1, + anon_sym_as, + ACTIONS(2435), 3, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - [62338] = 5, + [64055] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2071), 1, + ACTIONS(2397), 1, + anon_sym_COMMA, + ACTIONS(2401), 1, anon_sym_if, - ACTIONS(2081), 1, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2163), 5, - anon_sym_COMMA, + ACTIONS(2439), 1, + anon_sym_as, + ACTIONS(2441), 1, anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - [62358] = 4, + STATE(1364), 1, + aux_sym_exception_list_repeat1, + [64080] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2081), 1, - anon_sym_and, - ACTIONS(2083), 1, - anon_sym_or, - ACTIONS(2155), 6, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, + ACTIONS(2096), 1, anon_sym_async, + ACTIONS(2098), 1, anon_sym_for, + ACTIONS(2443), 1, + anon_sym_COMMA, + ACTIONS(2445), 1, anon_sym_RBRACE, - [62376] = 3, + STATE(1106), 1, + sym_for_in_clause, + STATE(1466), 1, + aux_sym_dictionary_repeat1, + STATE(1680), 1, + sym__comprehension_clauses, + [64105] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2081), 1, - anon_sym_and, - ACTIONS(2159), 7, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, + ACTIONS(2447), 1, + anon_sym_except, + ACTIONS(2449), 1, + anon_sym_finally, + STATE(564), 1, + sym_finally_clause, + STATE(281), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + STATE(282), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + [64126] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2096), 1, anon_sym_async, + ACTIONS(2098), 1, anon_sym_for, - anon_sym_RBRACE, - anon_sym_or, - [62392] = 4, + ACTIONS(2194), 1, + anon_sym_RPAREN, + ACTIONS(2196), 1, + anon_sym_COMMA, + STATE(1106), 1, + sym_for_in_clause, + STATE(1472), 1, + aux_sym_argument_list_repeat1, + STATE(1673), 1, + sym__comprehension_clauses, + [64151] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2081), 1, + ACTIONS(2401), 1, + anon_sym_if, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2159), 6, + ACTIONS(2186), 4, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, + anon_sym_as, anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - [62410] = 2, + [64170] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2359), 8, + ACTIONS(1558), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62424] = 4, + anon_sym_and, + anon_sym_or, + [64183] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2108), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2110), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2361), 6, - anon_sym_RPAREN, + ACTIONS(2198), 1, anon_sym_if, - anon_sym_async, - anon_sym_for, + ACTIONS(2451), 4, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_RBRACK, anon_sym_RBRACE, - [62442] = 5, + [64202] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2163), 5, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_EQ, - anon_sym_SEMI, - [62462] = 5, + ACTIONS(2453), 1, + sym_identifier, + ACTIONS(2455), 1, + anon_sym_STAR, + ACTIONS(2457), 1, + anon_sym_STAR_STAR, + STATE(1577), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [64221] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2071), 1, - anon_sym_if, - ACTIONS(2081), 1, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2083), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2177), 5, + ACTIONS(2176), 5, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - [62482] = 2, + [64238] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1597), 8, - sym__newline, - anon_sym_from, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_if, - anon_sym_EQ, - anon_sym_and, - anon_sym_or, - anon_sym_SEMI, - [62496] = 2, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, + anon_sym_RPAREN, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1618), 1, + sym__comprehension_clauses, + [64263] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2363), 8, - anon_sym_RPAREN, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, anon_sym_RBRACE, - [62510] = 2, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1728), 1, + sym__comprehension_clauses, + [64288] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2365), 8, - anon_sym_RPAREN, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, anon_sym_RBRACK, - anon_sym_RBRACE, - [62524] = 2, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1754), 1, + sym__comprehension_clauses, + [64313] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2367), 8, + ACTIONS(2459), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62538] = 4, + [64326] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2371), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - STATE(1162), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2369), 6, - anon_sym_RPAREN, - anon_sym_if, + ACTIONS(2096), 1, anon_sym_async, + ACTIONS(2098), 1, anon_sym_for, - anon_sym_RBRACK, + ACTIONS(2100), 1, anon_sym_RBRACE, - [62556] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2155), 6, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_EQ, - anon_sym_SEMI, - [62574] = 5, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1695), 1, + sym__comprehension_clauses, + [64351] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, - anon_sym_if, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2240), 1, - anon_sym_or, - ACTIONS(2281), 5, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2461), 1, anon_sym_COMMA, + ACTIONS(2463), 1, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [62594] = 4, + STATE(1106), 1, + sym_for_in_clause, + STATE(1449), 1, + aux_sym_dictionary_repeat1, + STATE(1665), 1, + sym__comprehension_clauses, + [64376] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2238), 1, - anon_sym_and, - ACTIONS(2240), 1, - anon_sym_or, - ACTIONS(2199), 6, + ACTIONS(2397), 1, anon_sym_COMMA, + ACTIONS(2401), 1, anon_sym_if, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [62612] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2161), 1, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2301), 5, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(2465), 1, + anon_sym_as, + ACTIONS(2467), 1, anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62632] = 2, + STATE(1364), 1, + aux_sym_exception_list_repeat1, + [64401] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2374), 8, - anon_sym_RPAREN, + ACTIONS(2397), 1, anon_sym_COMMA, - anon_sym_as, + ACTIONS(2401), 1, anon_sym_if, + ACTIONS(2405), 1, + anon_sym_and, + ACTIONS(2407), 1, + anon_sym_or, + ACTIONS(2469), 1, + anon_sym_as, + ACTIONS(2471), 1, anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62646] = 2, + STATE(1364), 1, + aux_sym_exception_list_repeat1, + [64426] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2050), 8, - anon_sym_COMMA, - anon_sym_if, - anon_sym_RBRACE, - anon_sym_EQ, + ACTIONS(2284), 1, anon_sym_and, + ACTIONS(2286), 1, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [62660] = 8, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2339), 1, + anon_sym_COMMA, + STATE(1288), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2276), 2, + sym__newline, + anon_sym_SEMI, + [64449] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2376), 1, - sym_identifier, - ACTIONS(2378), 1, - anon_sym_LPAREN, - ACTIONS(2380), 1, - anon_sym_STAR, - STATE(1290), 1, - sym_dotted_name, - STATE(1368), 1, - sym_aliased_import, - STATE(1532), 1, - sym__import_list, - STATE(1533), 1, - sym_wildcard_import, - [62685] = 8, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2232), 1, + anon_sym_RPAREN, + ACTIONS(2234), 1, + anon_sym_COMMA, + STATE(1106), 1, + sym_for_in_clause, + STATE(1521), 1, + aux_sym_argument_list_repeat1, + STATE(1618), 1, + sym__comprehension_clauses, + [64474] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2382), 1, + ACTIONS(2222), 1, + anon_sym_RPAREN, + ACTIONS(2224), 1, anon_sym_COMMA, - ACTIONS(2384), 1, - anon_sym_RBRACE, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1491), 1, - aux_sym_dictionary_repeat1, - STATE(1650), 1, + STATE(1412), 1, + aux_sym_argument_list_repeat1, + STATE(1628), 1, sym__comprehension_clauses, - [62710] = 6, + [64499] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2386), 1, - anon_sym_except, - ACTIONS(2388), 1, - anon_sym_finally, - STATE(553), 1, - sym_finally_clause, - STATE(279), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - STATE(283), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - [62731] = 5, + ACTIONS(2473), 1, + sym_identifier, + ACTIONS(2475), 1, + anon_sym_DOT, + ACTIONS(2477), 1, + anon_sym___future__, + STATE(1343), 1, + aux_sym_import_prefix_repeat1, + STATE(1462), 1, + sym_import_prefix, + STATE(1712), 2, + sym_relative_import, + sym_dotted_name, + [64522] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2390), 4, + ACTIONS(2212), 5, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, + anon_sym_if, anon_sym_COLON, - anon_sym_EQ, - [62750] = 6, + [64539] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2386), 1, + ACTIONS(2421), 1, anon_sym_except, - ACTIONS(2388), 1, + ACTIONS(2423), 1, anon_sym_finally, - STATE(562), 1, + STATE(556), 1, sym_finally_clause, - STATE(266), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, STATE(267), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - [62771] = 5, + STATE(275), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [64560] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2392), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62790] = 7, + ACTIONS(2447), 1, + anon_sym_except, + ACTIONS(2449), 1, + anon_sym_finally, + STATE(533), 1, + sym_finally_clause, + STATE(272), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(278), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [64581] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2394), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - STATE(1360), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2396), 2, - sym__newline, - anon_sym_SEMI, - [62813] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1597), 7, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_and, - anon_sym_or, - [62826] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2398), 1, - anon_sym_COMMA, - STATE(1365), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2400), 2, - sym__newline, - anon_sym_SEMI, - [62849] = 2, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1628), 1, + sym__comprehension_clauses, + [64606] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2402), 7, - anon_sym_RPAREN, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_if, + ACTIONS(2096), 1, anon_sym_async, + ACTIONS(2098), 1, anon_sym_for, + ACTIONS(2100), 1, anon_sym_RBRACK, - anon_sym_RBRACE, - [62862] = 7, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1722), 1, + sym__comprehension_clauses, + [64631] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2295), 1, - anon_sym_COMMA, - STATE(1260), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2404), 2, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2311), 4, sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_SEMI, - [62885] = 7, + [64650] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2295), 1, - anon_sym_COMMA, - STATE(1260), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2406), 2, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2319), 4, sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_SEMI, - [62908] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2408), 1, - anon_sym_except, - ACTIONS(2410), 1, - anon_sym_finally, - STATE(535), 1, - sym_finally_clause, - STATE(268), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - STATE(280), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - [62929] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2412), 1, - sym_identifier, - ACTIONS(2414), 1, - anon_sym_STAR, - ACTIONS(2416), 1, - anon_sym_STAR_STAR, - STATE(1524), 4, - sym_typevar_parameter, - sym_typevartuple_parameter, - sym_paramspec_parameter, - sym__type_parameter, - [62948] = 5, + [64669] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2234), 1, + ACTIONS(2262), 1, anon_sym_if, - ACTIONS(2238), 1, + ACTIONS(2266), 1, anon_sym_and, - ACTIONS(2240), 1, + ACTIONS(2268), 1, anon_sym_or, - ACTIONS(2418), 4, + ACTIONS(2451), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [62967] = 3, + [64688] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2422), 1, - anon_sym_as, - ACTIONS(2420), 6, + ACTIONS(2288), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62982] = 7, + [64701] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2295), 1, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2479), 1, anon_sym_COMMA, - STATE(1260), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2424), 2, + STATE(1380), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2481), 2, sym__newline, anon_sym_SEMI, - [63005] = 8, + [64724] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2426), 1, - anon_sym_COMMA, - ACTIONS(2428), 1, - anon_sym_as, - ACTIONS(2430), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2432), 1, - anon_sym_COLON, - ACTIONS(2434), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2140), 1, anon_sym_or, - STATE(1338), 1, - aux_sym_exception_list_repeat1, - [63030] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2408), 1, - anon_sym_except, - ACTIONS(2410), 1, - anon_sym_finally, - STATE(607), 1, - sym_finally_clause, - STATE(275), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - STATE(287), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - [63051] = 4, + ACTIONS(2483), 4, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [64743] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2434), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2199), 5, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, + ACTIONS(2299), 1, anon_sym_if, - anon_sym_COLON, - [63068] = 5, + ACTIONS(2485), 1, + anon_sym_COMMA, + STATE(1401), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2487), 2, + sym__newline, + anon_sym_SEMI, + [64766] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2418), 4, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, anon_sym_RPAREN, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1711), 1, + sym__comprehension_clauses, + [64791] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, anon_sym_COMMA, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, anon_sym_RBRACK, - anon_sym_RBRACE, - [63087] = 8, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1713), 1, + sym__comprehension_clauses, + [64816] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2438), 1, - anon_sym_COMMA, - ACTIONS(2440), 1, + ACTIONS(2100), 1, anon_sym_RBRACE, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1409), 1, - aux_sym_dictionary_repeat1, - STATE(1718), 1, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1717), 1, sym__comprehension_clauses, - [63112] = 5, + [64841] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2301), 4, - sym__newline, - anon_sym_from, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_SEMI, - [63131] = 5, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, + anon_sym_RPAREN, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1673), 1, + sym__comprehension_clauses, + [64866] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, - anon_sym_and, - ACTIONS(2436), 1, - anon_sym_or, - ACTIONS(2163), 4, - anon_sym_RPAREN, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_COLON, - [63150] = 4, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, + anon_sym_RBRACK, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1675), 1, + sym__comprehension_clauses, + [64891] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2434), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2155), 5, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2489), 4, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, - [63167] = 3, + anon_sym_EQ, + [64910] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2434), 1, - anon_sym_and, - ACTIONS(2159), 6, - anon_sym_RPAREN, + ACTIONS(2090), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_or, - [63182] = 4, + ACTIONS(2096), 1, + anon_sym_async, + ACTIONS(2098), 1, + anon_sym_for, + ACTIONS(2100), 1, + anon_sym_RBRACE, + STATE(1106), 1, + sym_for_in_clause, + STATE(1308), 1, + aux_sym__collection_elements_repeat1, + STATE(1676), 1, + sym__comprehension_clauses, + [64935] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2434), 1, - anon_sym_and, - ACTIONS(2436), 1, - anon_sym_or, - ACTIONS(2159), 5, + ACTIONS(2071), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_if, anon_sym_COLON, - [63199] = 2, + anon_sym_and, + anon_sym_or, + [64948] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2236), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63212] = 7, + ACTIONS(2453), 1, + sym_identifier, + ACTIONS(2455), 1, + anon_sym_STAR, + ACTIONS(2457), 1, + anon_sym_STAR_STAR, + STATE(1409), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [64967] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2398), 1, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2339), 1, anon_sym_COMMA, - STATE(1344), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2442), 2, + STATE(1288), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2491), 2, sym__newline, anon_sym_SEMI, - [63235] = 8, + [64990] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2075), 1, + ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2077), 1, + ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2444), 1, + ACTIONS(2493), 1, anon_sym_COMMA, - ACTIONS(2446), 1, + ACTIONS(2495), 1, anon_sym_RBRACE, - STATE(1100), 1, + STATE(1106), 1, sym_for_in_clause, - STATE(1427), 1, + STATE(1479), 1, aux_sym_dictionary_repeat1, - STATE(1631), 1, + STATE(1714), 1, sym__comprehension_clauses, - [63260] = 5, + [65015] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2281), 4, - sym__newline, - anon_sym_from, + ACTIONS(2276), 7, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_SEMI, - [63279] = 6, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [65028] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2430), 1, + ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2434), 1, + ACTIONS(2138), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2140), 1, anon_sym_or, - ACTIONS(2450), 1, - anon_sym_as, - ACTIONS(2448), 3, - anon_sym_RPAREN, + ACTIONS(2319), 4, anon_sym_COMMA, - anon_sym_COLON, - [63300] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2452), 1, - sym_identifier, - ACTIONS(2454), 1, - anon_sym_DOT, - ACTIONS(2456), 1, - anon_sym___future__, - STATE(1336), 1, - aux_sym_import_prefix_repeat1, - STATE(1402), 1, - sym_import_prefix, - STATE(1709), 2, - sym_relative_import, - sym_dotted_name, - [63323] = 7, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [65047] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2295), 1, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2339), 1, anon_sym_COMMA, - STATE(1260), 1, + STATE(1288), 1, aux_sym_expression_list_repeat1, - ACTIONS(2236), 2, + ACTIONS(2497), 2, sym__newline, anon_sym_SEMI, - [63346] = 2, + [65070] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2458), 7, + ACTIONS(2501), 1, + anon_sym_as, + ACTIONS(2499), 6, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [63359] = 8, + [65085] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2426), 1, - anon_sym_COMMA, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2460), 1, - anon_sym_as, - ACTIONS(2462), 1, - anon_sym_COLON, - STATE(1338), 1, - aux_sym_exception_list_repeat1, - [63384] = 8, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2485), 1, + anon_sym_COMMA, + STATE(1390), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2503), 2, + sym__newline, + anon_sym_SEMI, + [65108] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2426), 1, + ACTIONS(2505), 1, + anon_sym_DOT, + STATE(1242), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2075), 4, + sym__newline, anon_sym_COMMA, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, - anon_sym_and, - ACTIONS(2436), 1, - anon_sym_or, - ACTIONS(2464), 1, anon_sym_as, - ACTIONS(2466), 1, - anon_sym_COLON, - STATE(1338), 1, - aux_sym_exception_list_repeat1, - [63409] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2412), 1, - sym_identifier, - ACTIONS(2414), 1, - anon_sym_STAR, - ACTIONS(2416), 1, - anon_sym_STAR_STAR, - STATE(1416), 4, - sym_typevar_parameter, - sym_typevartuple_parameter, - sym_paramspec_parameter, - sym__type_parameter, - [63428] = 8, + anon_sym_SEMI, + [65124] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2426), 1, + ACTIONS(2510), 1, anon_sym_COMMA, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, - anon_sym_and, - ACTIONS(2436), 1, - anon_sym_or, - ACTIONS(2468), 1, - anon_sym_as, - ACTIONS(2470), 1, + STATE(1249), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2508), 4, + anon_sym_RPAREN, anon_sym_COLON, - STATE(1338), 1, - aux_sym_exception_list_repeat1, - [63453] = 5, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65140] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2177), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2514), 1, anon_sym_COLON, - [63472] = 5, + ACTIONS(2512), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [65160] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, - anon_sym_and, - ACTIONS(2436), 1, - anon_sym_or, - ACTIONS(2181), 4, - anon_sym_RPAREN, + ACTIONS(2516), 1, + anon_sym_DOT, + STATE(1262), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2518), 4, + sym__newline, anon_sym_COMMA, anon_sym_as, - anon_sym_COLON, - [63491] = 2, + anon_sym_SEMI, + [65176] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2050), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, + ACTIONS(2182), 1, anon_sym_and, + ACTIONS(2184), 1, anon_sym_or, - [63504] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2369), 7, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(2198), 1, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63517] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2075), 1, - anon_sym_async, - ACTIONS(2077), 1, - anon_sym_for, - ACTIONS(2472), 1, + ACTIONS(2522), 1, + anon_sym_COLON, + ACTIONS(2520), 2, anon_sym_COMMA, - ACTIONS(2474), 1, - anon_sym_RBRACE, - STATE(1100), 1, - sym_for_in_clause, - STATE(1433), 1, - aux_sym_dictionary_repeat1, - STATE(1721), 1, - sym__comprehension_clauses, - [63542] = 7, + anon_sym_RBRACK, + [65196] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2295), 1, - anon_sym_COMMA, - STATE(1260), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2476), 2, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2524), 3, sym__newline, + anon_sym_COMMA, anon_sym_SEMI, - [63565] = 5, + [65214] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2526), 2, + anon_sym_LBRACE2, + anon_sym_BSLASH, + ACTIONS(2528), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [65228] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, - anon_sym_if, - ACTIONS(2108), 1, - anon_sym_and, - ACTIONS(2110), 1, - anon_sym_or, - ACTIONS(2478), 4, + ACTIONS(2532), 1, anon_sym_COMMA, - anon_sym_async, - anon_sym_for, + STATE(1249), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2530), 4, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_RBRACK, anon_sym_RBRACE, - [63584] = 4, + [65244] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2480), 1, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2393), 1, anon_sym_COMMA, - STATE(1221), 1, + ACTIONS(2535), 1, + anon_sym_COLON, + STATE(1243), 1, aux_sym_expression_list_repeat1, - ACTIONS(2482), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63600] = 4, + [65266] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2091), 1, + ACTIONS(2106), 1, anon_sym_DOT, - STATE(1241), 1, + STATE(1256), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2484), 4, + ACTIONS(2518), 4, anon_sym_import, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - [63616] = 3, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2486), 2, - anon_sym_LBRACE2, - anon_sym_BSLASH, - ACTIONS(2488), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [63630] = 3, - ACTIONS(2065), 1, + [65282] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2490), 2, + ACTIONS(2537), 2, anon_sym_LBRACE2, anon_sym_BSLASH, - ACTIONS(2492), 4, + ACTIONS(2539), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [63644] = 4, + [65296] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2494), 1, - anon_sym_DOT, - STATE(1233), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2484), 4, - sym__newline, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2393), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_SEMI, - [63660] = 6, + ACTIONS(2541), 1, + anon_sym_COLON, + STATE(1243), 1, + aux_sym_expression_list_repeat1, + [65318] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2498), 1, + ACTIONS(2545), 1, anon_sym_COLON, - ACTIONS(2500), 1, + ACTIONS(2547), 1, anon_sym_EQ, - STATE(1327), 1, + STATE(1389), 1, sym__type_bound, - STATE(1529), 1, + STATE(1570), 1, sym__type_param_default, - ACTIONS(2496), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [63680] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2502), 1, - anon_sym_COMMA, - STATE(1221), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2505), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63696] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2507), 1, + ACTIONS(2543), 2, anon_sym_COMMA, - STATE(1222), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2505), 4, - anon_sym_RPAREN, - anon_sym_COLON, anon_sym_RBRACK, - anon_sym_RBRACE, - [63712] = 3, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2510), 2, - anon_sym_LBRACE2, - anon_sym_BSLASH, - ACTIONS(2512), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [63726] = 5, + [65338] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2514), 3, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2549), 3, sym__newline, anon_sym_COMMA, anon_sym_SEMI, - [63744] = 7, + [65356] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2171), 1, + ACTIONS(2106), 1, + anon_sym_DOT, + STATE(1039), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2551), 4, + anon_sym_import, anon_sym_RPAREN, - ACTIONS(2173), 1, - anon_sym_COMMA, - ACTIONS(2179), 1, - anon_sym_if, - STATE(1451), 1, - aux_sym_argument_list_repeat1, - [63766] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2516), 3, - sym__newline, anon_sym_COMMA, - anon_sym_SEMI, - [63784] = 5, + anon_sym_as, + [65372] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2518), 3, - sym__newline, - anon_sym_COMMA, - anon_sym_SEMI, - [63802] = 5, + ACTIONS(2555), 1, + anon_sym_AT, + STATE(1257), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + ACTIONS(2553), 3, + anon_sym_async, + anon_sym_def, + anon_sym_class, + [65388] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2520), 3, + ACTIONS(2232), 1, anon_sym_RPAREN, + ACTIONS(2234), 1, anon_sym_COMMA, - anon_sym_COLON, - [63820] = 4, - ACTIONS(3), 1, + STATE(1526), 1, + aux_sym_argument_list_repeat1, + [65410] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2522), 1, - anon_sym_COMMA, - STATE(1222), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2482), 4, - anon_sym_RPAREN, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63836] = 7, - ACTIONS(3), 1, + ACTIONS(2558), 2, + anon_sym_LBRACE2, + anon_sym_BSLASH, + ACTIONS(2560), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [65424] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2357), 1, - anon_sym_COMMA, - ACTIONS(2524), 1, - anon_sym_COLON, - STATE(1232), 1, - aux_sym_expression_list_repeat1, - [63858] = 5, + ACTIONS(2562), 2, + anon_sym_LBRACE2, + anon_sym_BSLASH, + ACTIONS(2564), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [65438] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2526), 3, + ACTIONS(2566), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - [63876] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2528), 1, - anon_sym_COMMA, - STATE(1222), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2482), 4, - anon_sym_RPAREN, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63892] = 4, + [65456] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2494), 1, + ACTIONS(2516), 1, anon_sym_DOT, - STATE(1234), 1, + STATE(1242), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2530), 4, + ACTIONS(2551), 4, sym__newline, anon_sym_COMMA, anon_sym_as, anon_sym_SEMI, - [63908] = 4, + [65472] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2532), 1, - anon_sym_DOT, - STATE(1234), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2054), 4, - sym__newline, + ACTIONS(2110), 6, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_SEMI, - [63924] = 7, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65484] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2357), 1, - anon_sym_COMMA, - ACTIONS(2535), 1, + ACTIONS(2570), 1, anon_sym_COLON, - STATE(1232), 1, - aux_sym_expression_list_repeat1, - [63946] = 7, + ACTIONS(2568), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [65504] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2357), 1, + ACTIONS(2393), 1, anon_sym_COMMA, - ACTIONS(2537), 1, + ACTIONS(2572), 1, anon_sym_COLON, - STATE(1232), 1, + STATE(1243), 1, aux_sym_expression_list_repeat1, - [63968] = 7, + [65526] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2401), 1, + anon_sym_if, + ACTIONS(2405), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2407), 1, anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2357), 1, + ACTIONS(2574), 3, anon_sym_COMMA, - ACTIONS(2539), 1, + anon_sym_as, anon_sym_COLON, - STATE(1232), 1, - aux_sym_expression_list_repeat1, - [63990] = 5, + [65544] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2541), 3, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_EQ, - [64008] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2095), 6, + ACTIONS(2576), 3, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [64020] = 7, + [65562] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2357), 1, + ACTIONS(2578), 3, anon_sym_COMMA, - ACTIONS(2543), 1, - anon_sym_COLON, - STATE(1232), 1, - aux_sym_expression_list_repeat1, - [64042] = 4, + anon_sym_RBRACK, + anon_sym_EQ, + [65580] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2091), 1, + ACTIONS(2475), 1, anon_sym_DOT, - STATE(1032), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2530), 4, - anon_sym_import, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - [64058] = 4, + ACTIONS(2580), 1, + sym_identifier, + STATE(1343), 1, + aux_sym_import_prefix_repeat1, + STATE(1462), 1, + sym_import_prefix, + STATE(1620), 2, + sym_relative_import, + sym_dotted_name, + [65600] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2547), 1, + ACTIONS(2582), 1, anon_sym_COMMA, - STATE(1242), 1, - aux_sym_open_sequence_match_pattern_repeat1, - ACTIONS(2545), 4, - anon_sym_RPAREN, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - [64074] = 5, + STATE(1270), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2530), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [65616] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2430), 1, - anon_sym_if, - ACTIONS(2434), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2436), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2550), 3, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2489), 3, + sym__newline, + anon_sym_EQ, + anon_sym_SEMI, + [65634] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2585), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_COLON, - [64092] = 2, + STATE(1270), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2508), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [65650] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2552), 6, - anon_sym_RPAREN, + ACTIONS(2587), 1, anon_sym_COMMA, - anon_sym_if, + STATE(1249), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2508), 4, + anon_sym_RPAREN, anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [64104] = 3, - ACTIONS(2065), 1, + [65666] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2589), 1, + anon_sym_COMMA, + STATE(1270), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2508), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [65682] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2554), 2, + ACTIONS(2591), 2, anon_sym_LBRACE2, anon_sym_BSLASH, - ACTIONS(2556), 4, + ACTIONS(2593), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [64118] = 6, + [65696] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2560), 1, - anon_sym_COLON, - ACTIONS(2558), 2, + ACTIONS(2393), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [64138] = 6, + ACTIONS(2595), 1, + anon_sym_COLON, + STATE(1243), 1, + aux_sym_expression_list_repeat1, + [65718] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2564), 1, - anon_sym_COLON, - ACTIONS(2562), 2, + ACTIONS(2393), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [64158] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2568), 1, - anon_sym_AT, - STATE(1248), 2, - sym_decorator, - aux_sym_decorated_definition_repeat1, - ACTIONS(2566), 3, - anon_sym_async, - anon_sym_def, - anon_sym_class, - [64174] = 6, + ACTIONS(2597), 1, + anon_sym_COLON, + STATE(1243), 1, + aux_sym_expression_list_repeat1, + [65740] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2299), 1, anon_sym_if, - ACTIONS(2573), 1, - anon_sym_COLON, - ACTIONS(2571), 2, + ACTIONS(2599), 3, + sym__newline, anon_sym_COMMA, - anon_sym_RBRACK, - [64194] = 5, + anon_sym_SEMI, + [65758] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2390), 3, - sym__newline, - anon_sym_EQ, - anon_sym_SEMI, - [64212] = 4, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2393), 1, + anon_sym_COMMA, + ACTIONS(2601), 1, + anon_sym_COLON, + STATE(1243), 1, + aux_sym_expression_list_repeat1, + [65780] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2575), 1, + ACTIONS(2605), 1, anon_sym_COMMA, - STATE(1221), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2482), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [64228] = 3, - ACTIONS(2065), 1, + STATE(1280), 1, + aux_sym_open_sequence_match_pattern_repeat1, + ACTIONS(2603), 4, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + [65796] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2577), 2, + ACTIONS(2608), 2, anon_sym_LBRACE2, anon_sym_BSLASH, - ACTIONS(2579), 4, + ACTIONS(2610), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [64242] = 3, - ACTIONS(2065), 1, + [65810] = 2, + ACTIONS(3), 1, sym_comment, - ACTIONS(2581), 2, - anon_sym_LBRACE2, - anon_sym_BSLASH, - ACTIONS(2583), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [64256] = 7, + ACTIONS(2612), 6, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65822] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2357), 1, + ACTIONS(2614), 2, anon_sym_COMMA, - ACTIONS(2585), 1, - anon_sym_COLON, - STATE(1232), 1, - aux_sym_expression_list_repeat1, - [64278] = 5, + anon_sym_RBRACK, + [65839] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2376), 1, - sym_identifier, - STATE(1306), 1, - sym_dotted_name, - STATE(1486), 1, - sym_aliased_import, - ACTIONS(2587), 2, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2616), 2, sym__newline, anon_sym_SEMI, - [64295] = 6, + [65856] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2589), 1, + ACTIONS(2618), 1, anon_sym_LPAREN, - ACTIONS(2591), 1, + ACTIONS(2620), 1, anon_sym_COLON, - ACTIONS(2593), 1, + ACTIONS(2622), 1, anon_sym_LBRACK, - STATE(1453), 1, + STATE(1520), 1, sym_type_parameters, - STATE(1601), 1, + STATE(1701), 1, sym_argument_list, - [64314] = 4, + [65875] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2624), 1, anon_sym_COMMA, - STATE(1259), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2079), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, + STATE(1299), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2508), 3, + sym__newline, + anon_sym_from, + anon_sym_SEMI, + [65890] = 6, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2626), 1, anon_sym_RBRACE, - [64329] = 5, + ACTIONS(2628), 1, + anon_sym_LBRACE2, + ACTIONS(2630), 1, + aux_sym_format_specifier_token1, + STATE(1315), 1, + aux_sym_format_specifier_repeat1, + STATE(1499), 1, + sym_interpolation, + [65909] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2418), 2, + ACTIONS(2632), 1, + anon_sym_COMMA, + STATE(1299), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2508), 3, sym__newline, + anon_sym_from, anon_sym_SEMI, - [64346] = 4, + [65924] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2597), 1, - anon_sym_COMMA, - STATE(1286), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2595), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, + ACTIONS(2634), 1, anon_sym_RBRACE, - [64361] = 4, + ACTIONS(2636), 1, + anon_sym_EQ, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(2640), 1, + sym_type_conversion, + STATE(1677), 1, + sym_format_specifier, + [65943] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2599), 1, + ACTIONS(2642), 1, anon_sym_COMMA, - STATE(1280), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2482), 3, + ACTIONS(2644), 1, + anon_sym_as, + STATE(1336), 1, + aux_sym__import_list_repeat1, + ACTIONS(2646), 2, sym__newline, - anon_sym_from, anon_sym_SEMI, - [64376] = 5, + [65960] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2601), 2, + ACTIONS(2311), 5, anon_sym_RPAREN, anon_sym_COMMA, - [64393] = 5, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65971] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2603), 2, - anon_sym_RPAREN, + ACTIONS(2483), 2, anon_sym_COMMA, - [64410] = 2, + anon_sym_RBRACE, + [65988] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2605), 5, - anon_sym_RPAREN, + ACTIONS(2075), 5, + sym__newline, + anon_sym_DOT, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, + anon_sym_as, + anon_sym_SEMI, + [65999] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, + anon_sym_COMMA, + STATE(1309), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2100), 3, + anon_sym_RPAREN, anon_sym_RBRACK, - [64421] = 5, + anon_sym_RBRACE, + [66014] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2299), 1, anon_sym_if, - ACTIONS(2607), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [64438] = 6, + ACTIONS(2648), 2, + sym__newline, + anon_sym_SEMI, + [66031] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2609), 1, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(2650), 1, anon_sym_RBRACE, - ACTIONS(2611), 1, + ACTIONS(2652), 1, anon_sym_EQ, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(2615), 1, + ACTIONS(2654), 1, sym_type_conversion, - STATE(1652), 1, + STATE(1651), 1, sym_format_specifier, - [64457] = 5, + [66050] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2617), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [64474] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2281), 5, + ACTIONS(2656), 2, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [64485] = 5, + [66067] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2619), 2, + ACTIONS(2658), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - [64502] = 5, + [66084] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2621), 2, + ACTIONS(2660), 1, + anon_sym_COMMA, + STATE(1299), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2530), 3, sym__newline, + anon_sym_from, anon_sym_SEMI, - [64519] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2623), 1, - anon_sym_COMMA, - STATE(1286), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2595), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [64534] = 5, + [66099] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2376), 1, + ACTIONS(2413), 1, sym_identifier, - STATE(1306), 1, + STATE(1329), 1, sym_dotted_name, - STATE(1486), 1, + STATE(1428), 1, sym_aliased_import, - ACTIONS(2625), 2, + ACTIONS(2663), 2, sym__newline, anon_sym_SEMI, - [64551] = 6, + [66116] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2376), 1, - sym_identifier, - ACTIONS(2627), 1, - anon_sym_LPAREN, - STATE(1290), 1, - sym_dotted_name, - STATE(1368), 1, - sym_aliased_import, - STATE(1527), 1, - sym__import_list, - [64570] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2281), 5, + ACTIONS(2311), 5, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [64581] = 5, + [66127] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2413), 1, + sym_identifier, + STATE(1329), 1, + sym_dotted_name, + STATE(1428), 1, + sym_aliased_import, + ACTIONS(2665), 2, + sym__newline, + anon_sym_SEMI, + [66144] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2629), 2, - anon_sym_RPAREN, + ACTIONS(2667), 2, anon_sym_COMMA, - [64598] = 5, + anon_sym_RBRACK, + [66161] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2376), 1, + ACTIONS(2413), 1, sym_identifier, - STATE(1306), 1, + STATE(1329), 1, sym_dotted_name, - STATE(1486), 1, + STATE(1428), 1, sym_aliased_import, - ACTIONS(2625), 2, + ACTIONS(2663), 2, sym__newline, anon_sym_SEMI, - [64615] = 5, + [66178] = 6, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2669), 1, + anon_sym_RBRACE, + ACTIONS(2671), 1, + anon_sym_LBRACE2, + ACTIONS(2674), 1, + aux_sym_format_specifier_token1, + STATE(1305), 1, + aux_sym_format_specifier_repeat1, + STATE(1499), 1, + sym_interpolation, + [66197] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2413), 1, + sym_identifier, + ACTIONS(2677), 1, + anon_sym_LPAREN, + STATE(1290), 1, + sym_dotted_name, + STATE(1327), 1, + sym_aliased_import, + STATE(1565), 1, + sym__import_list, + [66216] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2603), 5, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2631), 2, + anon_sym_COLON, + anon_sym_RBRACK, + [66227] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2681), 1, anon_sym_COMMA, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2679), 3, + anon_sym_RPAREN, anon_sym_RBRACK, - [64632] = 2, + anon_sym_RBRACE, + [66242] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2545), 5, + ACTIONS(2683), 1, + anon_sym_COMMA, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2679), 3, anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + [66257] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2685), 1, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2679), 3, + anon_sym_RPAREN, anon_sym_RBRACK, - [64643] = 4, + anon_sym_RBRACE, + [66272] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2633), 1, + ACTIONS(2689), 1, anon_sym_COMMA, - STATE(1280), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2482), 3, - sym__newline, - anon_sym_from, - anon_sym_SEMI, - [64658] = 5, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2687), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + [66287] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, + ACTIONS(2692), 5, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2261), 1, - anon_sym_and, - ACTIONS(2263), 1, - anon_sym_or, - ACTIONS(2635), 2, - sym__newline, - anon_sym_SEMI, - [64675] = 4, + anon_sym_COLON, + anon_sym_RBRACK, + [66298] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2637), 1, - anon_sym_COMMA, - STATE(1280), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2505), 3, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2694), 2, sym__newline, - anon_sym_from, anon_sym_SEMI, - [64690] = 6, + [66315] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2589), 1, + ACTIONS(2618), 1, anon_sym_LPAREN, - ACTIONS(2593), 1, + ACTIONS(2622), 1, anon_sym_LBRACK, - ACTIONS(2640), 1, + ACTIONS(2696), 1, anon_sym_COLON, - STATE(1493), 1, + STATE(1491), 1, sym_type_parameters, - STATE(1710), 1, + STATE(1626), 1, sym_argument_list, - [64709] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2478), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [64726] = 6, - ACTIONS(2065), 1, + [66334] = 6, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2642), 1, - anon_sym_RBRACE, - ACTIONS(2644), 1, + ACTIONS(2628), 1, anon_sym_LBRACE2, - ACTIONS(2646), 1, - aux_sym_format_specifier_token1, - STATE(1288), 1, - aux_sym_format_specifier_repeat1, - STATE(1497), 1, - sym_interpolation, - [64745] = 6, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2648), 1, + ACTIONS(2698), 1, anon_sym_RBRACE, - ACTIONS(2650), 1, - anon_sym_LBRACE2, - ACTIONS(2653), 1, + ACTIONS(2700), 1, aux_sym_format_specifier_token1, - STATE(1284), 1, + STATE(1305), 1, aux_sym_format_specifier_repeat1, - STATE(1497), 1, + STATE(1499), 1, sym_interpolation, - [64764] = 5, + [66353] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2656), 2, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2451), 2, sym__newline, anon_sym_SEMI, - [64781] = 4, + [66370] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2660), 1, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2702), 2, anon_sym_COMMA, - STATE(1286), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2658), 3, - anon_sym_RPAREN, anon_sym_RBRACK, - anon_sym_RBRACE, - [64796] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(2663), 1, - anon_sym_RBRACE, - ACTIONS(2665), 1, - anon_sym_EQ, - ACTIONS(2667), 1, - sym_type_conversion, - STATE(1587), 1, - sym_format_specifier, - [64815] = 6, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2644), 1, - anon_sym_LBRACE2, - ACTIONS(2669), 1, - anon_sym_RBRACE, - ACTIONS(2671), 1, - aux_sym_format_specifier_token1, - STATE(1284), 1, - aux_sym_format_specifier_repeat1, - STATE(1497), 1, - sym_interpolation, - [64834] = 2, + [66387] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2054), 5, - sym__newline, - anon_sym_DOT, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2704), 2, anon_sym_COMMA, - anon_sym_as, - anon_sym_SEMI, - [64845] = 5, + anon_sym_RBRACK, + [66404] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2673), 1, - anon_sym_COMMA, - ACTIONS(2675), 1, - anon_sym_as, - STATE(1359), 1, - aux_sym__import_list_repeat1, - ACTIONS(2677), 2, + ACTIONS(2284), 1, + anon_sym_and, + ACTIONS(2286), 1, + anon_sym_or, + ACTIONS(2299), 1, + anon_sym_if, + ACTIONS(2706), 2, sym__newline, anon_sym_SEMI, - [64862] = 5, + [66421] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2679), 2, + ACTIONS(2708), 2, anon_sym_COMMA, anon_sym_RBRACK, - [64879] = 5, + [66438] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2681), 2, - sym__newline, - anon_sym_SEMI, - [64896] = 4, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2710), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [66455] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2685), 1, - anon_sym_COMMA, - STATE(993), 1, - aux_sym__patterns_repeat1, - ACTIONS(2683), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - [64910] = 4, + ACTIONS(2712), 1, + anon_sym_SEMI, + ACTIONS(2715), 1, + sym__newline, + STATE(133), 1, + sym__semicolon, + STATE(1322), 1, + aux_sym__simple_statements_repeat1, + [66471] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2687), 1, + ACTIONS(2717), 1, anon_sym_COMMA, - STATE(1242), 1, - aux_sym_open_sequence_match_pattern_repeat1, - ACTIONS(1859), 2, - anon_sym_if, - anon_sym_COLON, - [64924] = 5, + STATE(1404), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2719), 2, + sym__newline, + anon_sym_SEMI, + [66485] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2689), 1, - anon_sym_COLON, - [64940] = 5, + ACTIONS(2721), 1, + anon_sym_case, + STATE(593), 1, + sym_cases, + STATE(461), 2, + sym_case_block, + aux_sym_cases_repeat1, + [66499] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2691), 1, + ACTIONS(2723), 1, anon_sym_COLON, - [64956] = 5, + [66515] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2284), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2299), 1, anon_sym_if, - ACTIONS(2693), 1, - anon_sym_else, - [64972] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2695), 1, - anon_sym_case, - STATE(610), 1, - sym_cases, - STATE(453), 2, - sym_case_block, - aux_sym_cases_repeat1, - [64986] = 4, + ACTIONS(2725), 1, + sym__newline, + [66531] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2697), 1, + ACTIONS(2642), 1, anon_sym_COMMA, - STATE(1355), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2699), 2, + STATE(1335), 1, + aux_sym__import_list_repeat1, + ACTIONS(2646), 2, sym__newline, anon_sym_SEMI, - [65000] = 2, + [66545] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2701), 4, - anon_sym_async, - anon_sym_def, - anon_sym_class, - anon_sym_AT, - [65010] = 5, + ACTIONS(567), 1, + sym__newline, + ACTIONS(2727), 1, + anon_sym_SEMI, + STATE(128), 1, + sym__semicolon, + STATE(1322), 1, + aux_sym__simple_statements_repeat1, + [66561] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2593), 1, - anon_sym_LBRACK, - ACTIONS(2703), 1, - anon_sym_LPAREN, - STATE(1554), 1, - sym_parameters, - STATE(1557), 1, - sym_type_parameters, - [65026] = 5, + ACTIONS(2644), 1, + anon_sym_as, + ACTIONS(2729), 3, + sym__newline, + anon_sym_COMMA, + anon_sym_SEMI, + [66573] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2613), 1, + ACTIONS(2638), 1, anon_sym_COLON2, - ACTIONS(2705), 1, + ACTIONS(2731), 1, anon_sym_RBRACE, - ACTIONS(2707), 1, + ACTIONS(2733), 1, sym_type_conversion, - STATE(1692), 1, + STATE(1646), 1, sym_format_specifier, - [65042] = 5, + [66589] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2735), 1, + anon_sym_COLON, + [66605] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(562), 1, + ACTIONS(2737), 1, + anon_sym_COMMA, + STATE(1332), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2740), 2, sym__newline, - ACTIONS(2709), 1, anon_sym_SEMI, - STATE(129), 1, - sym__semicolon, - STATE(1357), 1, - aux_sym__simple_statements_repeat1, - [65058] = 4, + [66619] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2711), 1, - anon_sym_case, - STATE(555), 1, - sym_cases, - STATE(452), 2, - sym_case_block, - aux_sym_cases_repeat1, - [65072] = 4, + ACTIONS(2744), 1, + anon_sym_EQ, + ACTIONS(2742), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + [66631] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2711), 1, + ACTIONS(2746), 1, anon_sym_case, - STATE(556), 1, + STATE(545), 1, sym_cases, - STATE(452), 2, + STATE(440), 2, sym_case_block, aux_sym_cases_repeat1, - [65086] = 3, + [66645] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2675), 1, - anon_sym_as, - ACTIONS(2713), 3, + ACTIONS(2748), 1, + anon_sym_COMMA, + STATE(1339), 1, + aux_sym__import_list_repeat1, + ACTIONS(2750), 2, sym__newline, + anon_sym_SEMI, + [66659] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2752), 1, anon_sym_COMMA, + STATE(1339), 1, + aux_sym__import_list_repeat1, + ACTIONS(2750), 2, + sym__newline, anon_sym_SEMI, - [65098] = 5, + [66673] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2715), 1, - anon_sym_else, - [65114] = 2, + ACTIONS(2580), 1, + sym_identifier, + ACTIONS(2663), 1, + anon_sym_RPAREN, + STATE(1438), 1, + sym_dotted_name, + STATE(1600), 1, + sym_aliased_import, + [66689] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2390), 4, + ACTIONS(2580), 1, + sym_identifier, + ACTIONS(2663), 1, anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_EQ, - [65124] = 4, + STATE(1438), 1, + sym_dotted_name, + STATE(1600), 1, + sym_aliased_import, + [66705] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2717), 1, + ACTIONS(2754), 1, anon_sym_COMMA, - STATE(1309), 1, + STATE(1339), 1, aux_sym__import_list_repeat1, - ACTIONS(2720), 2, + ACTIONS(2757), 2, sym__newline, anon_sym_SEMI, - [65138] = 5, + [66719] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(2722), 1, - anon_sym_RBRACE, - ACTIONS(2724), 1, - sym_type_conversion, - STATE(1641), 1, - sym_format_specifier, - [65154] = 5, + ACTIONS(2746), 1, + anon_sym_case, + STATE(546), 1, + sym_cases, + STATE(440), 2, + sym_case_block, + aux_sym_cases_repeat1, + [66733] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2726), 1, + ACTIONS(2580), 1, sym_identifier, - STATE(1330), 1, + STATE(1362), 1, sym_dotted_name, - STATE(1395), 1, + STATE(1467), 1, sym_aliased_import, - STATE(1701), 1, + STATE(1670), 1, sym__import_list, - [65170] = 5, + [66749] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2726), 1, + ACTIONS(2580), 1, sym_identifier, - STATE(1330), 1, + STATE(1362), 1, sym_dotted_name, - STATE(1395), 1, + STATE(1467), 1, sym_aliased_import, - STATE(1702), 1, + STATE(1671), 1, sym__import_list, - [65186] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2728), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [65196] = 2, + [66765] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2730), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [65206] = 2, + ACTIONS(2761), 1, + anon_sym_DOT, + STATE(1352), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(2759), 2, + anon_sym_import, + sym_identifier, + [66779] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2392), 4, + ACTIONS(2763), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACK, anon_sym_RBRACE, - [65216] = 4, + [66789] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2732), 1, - anon_sym_COMMA, - STATE(1340), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2734), 2, - sym__newline, + ACTIONS(2765), 1, anon_sym_SEMI, - [65230] = 4, + ACTIONS(2767), 1, + sym__newline, + STATE(129), 1, + sym__semicolon, + STATE(1351), 1, + aux_sym__simple_statements_repeat1, + [66805] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(310), 1, - sym__string_start, - ACTIONS(2097), 1, - anon_sym_COLON, - STATE(616), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - [65244] = 4, + ACTIONS(2769), 1, + anon_sym_SEMI, + ACTIONS(2771), 1, + sym__newline, + STATE(127), 1, + sym__semicolon, + STATE(1399), 1, + aux_sym__simple_statements_repeat1, + [66821] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(312), 1, - sym__template_string_start, - ACTIONS(2097), 1, - anon_sym_COLON, - STATE(617), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - [65258] = 4, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2773), 1, + anon_sym_else, + [66837] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2736), 1, + ACTIONS(2775), 1, anon_sym_COMMA, - STATE(1319), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2739), 2, - sym__newline, - anon_sym_SEMI, - [65272] = 4, + STATE(1348), 1, + aux_sym_exception_list_repeat1, + ACTIONS(2778), 2, + anon_sym_as, + anon_sym_COLON, + [66851] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2741), 1, + ACTIONS(2780), 4, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1320), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2518), 2, - sym__newline, - anon_sym_SEMI, - [65286] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2376), 1, - sym_identifier, - STATE(1290), 1, - sym_dotted_name, - STATE(1368), 1, - sym_aliased_import, - STATE(1507), 1, - sym__import_list, - [65302] = 5, + anon_sym_RBRACK, + anon_sym_RBRACE, + [66861] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2744), 1, + ACTIONS(2782), 1, anon_sym_COLON, - [65318] = 5, + [66877] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2593), 1, - anon_sym_LBRACK, - ACTIONS(2703), 1, - anon_sym_LPAREN, - STATE(1511), 1, - sym_parameters, - STATE(1512), 1, - sym_type_parameters, - [65334] = 5, + ACTIONS(565), 1, + sym__newline, + ACTIONS(2784), 1, + anon_sym_SEMI, + STATE(131), 1, + sym__semicolon, + STATE(1322), 1, + aux_sym__simple_statements_repeat1, + [66893] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2259), 1, - anon_sym_if, - ACTIONS(2261), 1, + ACTIONS(2788), 1, + anon_sym_DOT, + STATE(1352), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(2786), 2, + anon_sym_import, + sym_identifier, + [66907] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2263), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2746), 1, - sym__newline, - [65350] = 4, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2791), 1, + anon_sym_else, + [66923] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2750), 1, - anon_sym_COMMA, - STATE(1325), 1, - aux_sym_with_clause_repeat1, - ACTIONS(2748), 2, + ACTIONS(2411), 4, anon_sym_RPAREN, - anon_sym_COLON, - [65364] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2697), 1, anon_sym_COMMA, - STATE(1354), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2753), 2, - sym__newline, - anon_sym_SEMI, - [65378] = 4, + anon_sym_RBRACK, + anon_sym_RBRACE, + [66933] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2500), 1, - anon_sym_EQ, - STATE(1522), 1, - sym__type_param_default, - ACTIONS(2755), 2, + ACTIONS(2795), 1, anon_sym_COMMA, + STATE(1360), 1, + aux_sym__patterns_repeat1, + ACTIONS(2793), 2, + anon_sym_RPAREN, anon_sym_RBRACK, - [65392] = 5, + [66947] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2625), 1, - anon_sym_RPAREN, - ACTIONS(2726), 1, - sym_identifier, - STATE(1382), 1, - sym_dotted_name, - STATE(1540), 1, - sym_aliased_import, - [65408] = 5, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(2797), 1, + anon_sym_RBRACE, + ACTIONS(2799), 1, + sym_type_conversion, + STATE(1741), 1, + sym_format_specifier, + [66963] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2625), 1, - anon_sym_RPAREN, - ACTIONS(2726), 1, + ACTIONS(2413), 1, sym_identifier, - STATE(1382), 1, + STATE(1290), 1, sym_dotted_name, - STATE(1540), 1, + STATE(1327), 1, sym_aliased_import, - [65424] = 5, + STATE(1552), 1, + sym__import_list, + [66979] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2677), 1, + ACTIONS(2489), 4, anon_sym_RPAREN, - ACTIONS(2757), 1, anon_sym_COMMA, - ACTIONS(2759), 1, - anon_sym_as, - STATE(1488), 1, - aux_sym__import_list_repeat1, - [65440] = 5, + anon_sym_COLON, + anon_sym_EQ, + [66989] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2761), 1, + ACTIONS(2801), 1, anon_sym_COLON, - [65456] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2763), 1, - anon_sym_SEMI, - ACTIONS(2765), 1, - sym__newline, - STATE(132), 1, - sym__semicolon, - STATE(1333), 1, - aux_sym__simple_statements_repeat1, - [65472] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(566), 1, - sym__newline, - ACTIONS(2767), 1, - anon_sym_SEMI, - STATE(131), 1, - sym__semicolon, - STATE(1357), 1, - aux_sym__simple_statements_repeat1, - [65488] = 5, + [67005] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2769), 1, - anon_sym_COLON, - [65504] = 5, + ACTIONS(2805), 1, + anon_sym_COMMA, + STATE(1000), 1, + aux_sym__patterns_repeat1, + ACTIONS(2803), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [67019] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2771), 1, + ACTIONS(2807), 1, anon_sym_else, - [65520] = 4, + [67035] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2775), 1, - anon_sym_DOT, - STATE(1362), 1, - aux_sym_import_prefix_repeat1, - ACTIONS(2773), 2, - anon_sym_import, - sym_identifier, - [65534] = 4, + ACTIONS(2646), 1, + anon_sym_RPAREN, + ACTIONS(2809), 1, + anon_sym_COMMA, + ACTIONS(2811), 1, + anon_sym_as, + STATE(1415), 1, + aux_sym__import_list_repeat1, + [67051] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2777), 1, - anon_sym_COMMA, - STATE(1337), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2780), 2, - sym__newline, - anon_sym_SEMI, - [65548] = 4, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2813), 1, + anon_sym_COLON, + [67067] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2426), 1, + ACTIONS(2397), 1, anon_sym_COMMA, - STATE(1364), 1, + STATE(1348), 1, aux_sym_exception_list_repeat1, - ACTIONS(2782), 2, + ACTIONS(2815), 2, anon_sym_as, anon_sym_COLON, - [65562] = 5, + [67081] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2784), 1, + ACTIONS(2817), 1, anon_sym_else, - [65578] = 4, + [67097] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2786), 1, + ACTIONS(2819), 1, anon_sym_COMMA, - STATE(1319), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2788), 2, + STATE(1394), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2821), 2, sym__newline, anon_sym_SEMI, - [65592] = 3, + [67111] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2792), 1, - anon_sym_EQ, - ACTIONS(2790), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - [65604] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2796), 1, - anon_sym_COLON, - ACTIONS(2798), 1, - anon_sym_EQ, - ACTIONS(2794), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [65618] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(556), 1, - sym__newline, - ACTIONS(2800), 1, - anon_sym_SEMI, - STATE(128), 1, - sym__semicolon, - STATE(1357), 1, - aux_sym__simple_statements_repeat1, - [65634] = 4, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2823), 1, + anon_sym_else, + [67127] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2398), 1, + ACTIONS(2825), 1, anon_sym_COMMA, - STATE(1320), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2802), 2, + STATE(1368), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2828), 2, sym__newline, anon_sym_SEMI, - [65648] = 5, + [67141] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2804), 1, - anon_sym_else, - [65664] = 5, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(2112), 1, + anon_sym_COLON, + STATE(690), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + [67155] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2806), 1, + ACTIONS(2830), 1, anon_sym_COLON, - [65680] = 5, + [67171] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2808), 1, + ACTIONS(2832), 1, anon_sym_COLON, - [65696] = 5, + [67187] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2810), 1, - anon_sym_SEMI, - ACTIONS(2812), 1, + ACTIONS(2834), 1, + anon_sym_COMMA, + STATE(1372), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2549), 2, sym__newline, - STATE(127), 1, - sym__semicolon, - STATE(1343), 1, - aux_sym__simple_statements_repeat1, - [65712] = 5, + anon_sym_SEMI, + [67201] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2814), 1, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(2112), 1, anon_sym_COLON, - [65728] = 5, + STATE(693), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + [67215] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2547), 1, + anon_sym_EQ, + STATE(1562), 1, + sym__type_param_default, + ACTIONS(2837), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [67229] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2721), 1, + anon_sym_case, + STATE(558), 1, + sym_cases, + STATE(461), 2, + sym_case_block, + aux_sym_cases_repeat1, + [67243] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2816), 1, + ACTIONS(2839), 1, anon_sym_COLON, - [65744] = 5, + [67259] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2818), 1, + ACTIONS(2841), 1, anon_sym_COLON, - [65760] = 5, + [67275] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2820), 1, + ACTIONS(2843), 1, anon_sym_COLON, - [65776] = 4, + [67291] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2822), 1, + ACTIONS(2547), 1, + anon_sym_EQ, + STATE(1563), 1, + sym__type_param_default, + ACTIONS(2845), 2, anon_sym_COMMA, - STATE(1309), 1, - aux_sym__import_list_repeat1, - ACTIONS(2824), 2, - sym__newline, - anon_sym_SEMI, - [65790] = 4, + anon_sym_RBRACK, + [67305] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2697), 1, + ACTIONS(2847), 1, anon_sym_COMMA, - STATE(1337), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2826), 2, + STATE(1368), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2849), 2, sym__newline, anon_sym_SEMI, - [65804] = 4, + [67319] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2697), 1, - anon_sym_COMMA, - STATE(1337), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2828), 2, - sym__newline, - anon_sym_SEMI, - [65818] = 4, + ACTIONS(2580), 1, + sym_identifier, + STATE(1362), 1, + sym_dotted_name, + STATE(1467), 1, + sym_aliased_import, + STATE(1625), 1, + sym__import_list, + [67335] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2832), 1, + ACTIONS(2851), 1, anon_sym_COMMA, - STATE(1293), 1, - aux_sym__patterns_repeat1, - ACTIONS(2830), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - [65832] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2834), 1, - anon_sym_SEMI, - ACTIONS(2837), 1, - sym__newline, - STATE(133), 1, - sym__semicolon, - STATE(1357), 1, - aux_sym__simple_statements_repeat1, - [65848] = 2, + STATE(1280), 1, + aux_sym_open_sequence_match_pattern_repeat1, + ACTIONS(1902), 2, + anon_sym_if, + anon_sym_COLON, + [67349] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2281), 4, - sym__newline, - anon_sym_from, + ACTIONS(2855), 1, + anon_sym_COLON, + ACTIONS(2857), 1, + anon_sym_EQ, + ACTIONS(2853), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_SEMI, - [65858] = 4, + [67363] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2839), 1, - anon_sym_COMMA, - STATE(1309), 1, - aux_sym__import_list_repeat1, - ACTIONS(2824), 2, - sym__newline, - anon_sym_SEMI, - [65872] = 4, + ACTIONS(2580), 1, + sym_identifier, + ACTIONS(2665), 1, + anon_sym_RPAREN, + STATE(1438), 1, + sym_dotted_name, + STATE(1600), 1, + sym_aliased_import, + [67379] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2841), 1, - anon_sym_COMMA, - STATE(1319), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2843), 2, - sym__newline, - anon_sym_SEMI, - [65886] = 5, + ACTIONS(2413), 1, + sym_identifier, + STATE(1290), 1, + sym_dotted_name, + STATE(1327), 1, + sym_aliased_import, + STATE(1596), 1, + sym__import_list, + [67395] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, + ACTIONS(2182), 1, anon_sym_and, - ACTIONS(2167), 1, + ACTIONS(2184), 1, anon_sym_or, - ACTIONS(2179), 1, + ACTIONS(2198), 1, anon_sym_if, - ACTIONS(2845), 1, + ACTIONS(2859), 1, anon_sym_COLON, - [65902] = 4, + [67411] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2849), 1, - anon_sym_DOT, - STATE(1362), 1, - aux_sym_import_prefix_repeat1, - ACTIONS(2847), 2, - anon_sym_import, - sym_identifier, - [65916] = 4, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2861), 1, + anon_sym_else, + [67427] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2695), 1, - anon_sym_case, - STATE(609), 1, - sym_cases, - STATE(453), 2, - sym_case_block, - aux_sym_cases_repeat1, - [65930] = 4, + ACTIONS(2819), 1, + anon_sym_COMMA, + STATE(1332), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2863), 2, + sym__newline, + anon_sym_SEMI, + [67441] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2852), 1, + ACTIONS(2547), 1, + anon_sym_EQ, + STATE(1575), 1, + sym__type_param_default, + ACTIONS(2865), 2, anon_sym_COMMA, - STATE(1364), 1, - aux_sym_exception_list_repeat1, - ACTIONS(2855), 2, - anon_sym_as, - anon_sym_COLON, - [65944] = 4, + anon_sym_RBRACK, + [67455] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2398), 1, + ACTIONS(2485), 1, anon_sym_COMMA, - STATE(1320), 1, + STATE(1372), 1, aux_sym_assert_statement_repeat1, - ACTIONS(2857), 2, + ACTIONS(2867), 2, sym__newline, anon_sym_SEMI, - [65958] = 5, + [67469] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2161), 1, - anon_sym_and, - ACTIONS(2167), 1, - anon_sym_or, - ACTIONS(2179), 1, - anon_sym_if, - ACTIONS(2859), 1, - anon_sym_else, - [65974] = 5, + ACTIONS(2869), 4, + anon_sym_async, + anon_sym_def, + anon_sym_class, + anon_sym_AT, + [67479] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2587), 1, - anon_sym_RPAREN, - ACTIONS(2726), 1, - sym_identifier, - STATE(1382), 1, - sym_dotted_name, - STATE(1540), 1, - sym_aliased_import, - [65990] = 4, + ACTIONS(2819), 1, + anon_sym_COMMA, + STATE(1388), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2871), 2, + sym__newline, + anon_sym_SEMI, + [67493] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2673), 1, + ACTIONS(2311), 4, + sym__newline, + anon_sym_from, anon_sym_COMMA, - STATE(1353), 1, - aux_sym__import_list_repeat1, - ACTIONS(2677), 2, + anon_sym_SEMI, + [67503] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2819), 1, + anon_sym_COMMA, + STATE(1332), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2873), 2, sym__newline, anon_sym_SEMI, - [66004] = 5, + [67517] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2182), 1, + anon_sym_and, + ACTIONS(2184), 1, + anon_sym_or, + ACTIONS(2198), 1, + anon_sym_if, + ACTIONS(2875), 1, + anon_sym_COLON, + [67533] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2593), 1, + ACTIONS(2622), 1, anon_sym_LBRACK, - ACTIONS(2703), 1, + ACTIONS(2877), 1, anon_sym_LPAREN, - STATE(1541), 1, - sym_parameters, - STATE(1576), 1, + STATE(1574), 1, sym_type_parameters, - [66020] = 5, + STATE(1612), 1, + sym_parameters, + [67549] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2593), 1, + ACTIONS(2622), 1, anon_sym_LBRACK, - ACTIONS(2703), 1, + ACTIONS(2877), 1, anon_sym_LPAREN, - STATE(1543), 1, + STATE(1538), 1, sym_parameters, - STATE(1578), 1, + STATE(1597), 1, sym_type_parameters, - [66036] = 4, + [67565] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2500), 1, - anon_sym_EQ, - STATE(1555), 1, - sym__type_param_default, - ACTIONS(2861), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [66050] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2500), 1, - anon_sym_EQ, - STATE(1516), 1, - sym__type_param_default, - ACTIONS(2863), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [66064] = 5, + ACTIONS(2622), 1, + anon_sym_LBRACK, + ACTIONS(2877), 1, + anon_sym_LPAREN, + STATE(1541), 1, + sym_parameters, + STATE(1599), 1, + sym_type_parameters, + [67581] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2865), 1, - anon_sym_SEMI, - ACTIONS(2867), 1, + ACTIONS(561), 1, sym__newline, - STATE(130), 1, + ACTIONS(2879), 1, + anon_sym_SEMI, + STATE(132), 1, sym__semicolon, - STATE(1303), 1, + STATE(1322), 1, aux_sym__simple_statements_repeat1, - [66080] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2869), 1, - sym_identifier, - ACTIONS(2871), 1, - sym_match_wildcard_pattern, - STATE(1263), 1, - sym_match_capture_pattern, - [66093] = 4, + [67597] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2873), 1, + ACTIONS(2883), 1, anon_sym_COMMA, - ACTIONS(2876), 1, - anon_sym_RBRACK, - STATE(1375), 1, - aux_sym_type_parameters_repeat1, - [66106] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2048), 1, + STATE(1400), 1, + aux_sym_with_clause_repeat1, + ACTIONS(2881), 2, anon_sym_RPAREN, - ACTIONS(2878), 1, - anon_sym_COMMA, - STATE(1443), 1, - aux_sym__parameters_repeat1, - [66119] = 4, + anon_sym_COLON, + [67611] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2880), 1, + ACTIONS(2485), 1, anon_sym_COMMA, - ACTIONS(2882), 1, - anon_sym_RBRACK, - STATE(1492), 1, - aux_sym_index_expression_list_repeat1, - [66132] = 4, + STATE(1372), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2886), 2, + sym__newline, + anon_sym_SEMI, + [67625] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2884), 1, - anon_sym_COMMA, - ACTIONS(2887), 1, - anon_sym_RBRACK, - STATE(1378), 1, - aux_sym_index_expression_list_repeat1, - [66145] = 2, + ACTIONS(2888), 1, + anon_sym_SEMI, + ACTIONS(2890), 1, + sym__newline, + STATE(130), 1, + sym__semicolon, + STATE(1328), 1, + aux_sym__simple_statements_repeat1, + [67641] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2889), 3, + ACTIONS(2622), 1, + anon_sym_LBRACK, + ACTIONS(2877), 1, anon_sym_LPAREN, - anon_sym_COLON, - anon_sym_EQ, - [66154] = 3, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2510), 1, - anon_sym_RBRACE, - ACTIONS(2512), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [66165] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2891), 1, - anon_sym_RPAREN, - ACTIONS(2893), 1, - anon_sym_COMMA, - STATE(1413), 1, - aux_sym_match_class_pattern_repeat2, - [66178] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2759), 1, - anon_sym_as, - ACTIONS(2713), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [66189] = 4, + STATE(1548), 1, + sym_parameters, + STATE(1572), 1, + sym_type_parameters, + [67657] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2892), 1, anon_sym_COMMA, - ACTIONS(2169), 1, - anon_sym_RPAREN, - STATE(1454), 1, - aux_sym__collection_elements_repeat1, - [66202] = 4, + STATE(1368), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2894), 2, + sym__newline, + anon_sym_SEMI, + [67671] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2720), 1, - anon_sym_RPAREN, - ACTIONS(2895), 1, + ACTIONS(2031), 1, anon_sym_COMMA, - STATE(1384), 1, - aux_sym__import_list_repeat1, - [66215] = 4, + ACTIONS(2896), 1, + anon_sym_in, + STATE(1018), 1, + aux_sym__patterns_repeat1, + [67684] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2898), 1, anon_sym_COMMA, ACTIONS(2900), 1, anon_sym_COLON, - STATE(1471), 1, + STATE(1481), 1, aux_sym__parameters_repeat1, - [66228] = 4, + [67697] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2902), 1, - anon_sym_COMMA, + anon_sym_if, ACTIONS(2904), 1, - anon_sym_RBRACK, - STATE(1375), 1, - aux_sym_type_parameters_repeat1, - [66241] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2195), 1, - anon_sym_RPAREN, - ACTIONS(2197), 1, - anon_sym_COMMA, - STATE(1462), 1, - aux_sym_argument_list_repeat1, - [66254] = 4, + anon_sym_COLON, + STATE(1661), 1, + sym_guard, + [67710] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(2906), 1, - anon_sym_RPAREN, - ACTIONS(2908), 1, anon_sym_COMMA, - STATE(1481), 1, - aux_sym_argument_list_repeat1, - [66267] = 4, + ACTIONS(2908), 2, + anon_sym_if, + anon_sym_COLON, + [67721] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2910), 1, anon_sym_COMMA, ACTIONS(2912), 1, - anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [66280] = 4, + anon_sym_RBRACK, + STATE(1418), 1, + aux_sym_type_parameters_repeat1, + [67734] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2914), 1, - anon_sym_if, - ACTIONS(2916), 1, + ACTIONS(2853), 3, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - STATE(1689), 1, - sym_guard, - [66293] = 3, + [67743] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2914), 1, + anon_sym_in, + ACTIONS(2916), 2, + sym__newline, + anon_sym_SEMI, + [67754] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2918), 1, + anon_sym_RPAREN, + ACTIONS(2920), 1, anon_sym_COMMA, - ACTIONS(2920), 2, - anon_sym_if, - anon_sym_COLON, - [66304] = 4, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [67767] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2922), 1, anon_sym_RPAREN, ACTIONS(2924), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [66317] = 3, + [67780] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2927), 1, - anon_sym_in, - ACTIONS(2929), 2, - sym__newline, - anon_sym_SEMI, - [66328] = 2, + ACTIONS(2750), 1, + anon_sym_RPAREN, + ACTIONS(2926), 1, + anon_sym_COMMA, + STATE(1440), 1, + aux_sym__import_list_repeat1, + [67793] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2794), 3, + ACTIONS(2750), 1, anon_sym_RPAREN, + ACTIONS(2928), 1, anon_sym_COMMA, + STATE(1440), 1, + aux_sym__import_list_repeat1, + [67806] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2622), 1, + anon_sym_LBRACK, + ACTIONS(2930), 1, + anon_sym_EQ, + STATE(1738), 1, + sym_type_parameters, + [67819] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2932), 3, + anon_sym_LPAREN, anon_sym_COLON, - [66337] = 4, + anon_sym_EQ, + [67828] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2677), 1, - anon_sym_RPAREN, - ACTIONS(2757), 1, + ACTIONS(2910), 1, anon_sym_COMMA, - STATE(1487), 1, - aux_sym__import_list_repeat1, - [66350] = 4, + ACTIONS(2934), 1, + anon_sym_RBRACK, + STATE(1511), 1, + aux_sym_type_parameters_repeat1, + [67841] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1893), 1, - anon_sym_RPAREN, - ACTIONS(2931), 1, + ACTIONS(2936), 1, sym_identifier, - STATE(1558), 1, + ACTIONS(2938), 1, + anon_sym_RPAREN, + STATE(1592), 1, sym_match_keyword_pattern, - [66363] = 4, + [67854] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2171), 1, + ACTIONS(2938), 1, anon_sym_RPAREN, - ACTIONS(2173), 1, + ACTIONS(2940), 1, anon_sym_COMMA, - STATE(1448), 1, - aux_sym_argument_list_repeat1, - [66376] = 4, + STATE(1444), 1, + aux_sym_match_class_pattern_repeat2, + [67867] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2933), 1, + ACTIONS(2938), 1, anon_sym_RPAREN, - ACTIONS(2935), 1, + ACTIONS(2940), 1, anon_sym_COMMA, - STATE(1450), 1, - aux_sym_argument_list_repeat1, - [66389] = 4, + STATE(1429), 1, + aux_sym_match_class_pattern_repeat2, + [67880] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1895), 1, + ACTIONS(1340), 3, anon_sym_RPAREN, - ACTIONS(2937), 1, - anon_sym_COMMA, - STATE(1468), 1, - aux_sym_match_class_pattern_repeat1, - [66402] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2069), 1, anon_sym_COMMA, - ACTIONS(2099), 1, - anon_sym_RPAREN, - STATE(1454), 1, - aux_sym__collection_elements_repeat1, - [66415] = 4, + anon_sym_COLON, + [67889] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2939), 1, - anon_sym_COMMA, - ACTIONS(2942), 1, + ACTIONS(1997), 1, anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [66428] = 4, + ACTIONS(2942), 1, + anon_sym_COMMA, + STATE(1477), 1, + aux_sym_match_mapping_pattern_repeat1, + [67902] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2452), 1, - sym_identifier, + ACTIONS(1916), 1, + anon_sym_RPAREN, ACTIONS(2944), 1, - anon_sym_import, - STATE(1654), 1, - sym_dotted_name, - [66441] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2438), 1, anon_sym_COMMA, - ACTIONS(2440), 1, - anon_sym_RBRACE, - STATE(1408), 1, - aux_sym_dictionary_repeat1, - [66454] = 2, + STATE(1420), 1, + aux_sym_match_class_pattern_repeat2, + [67915] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1525), 3, + ACTIONS(2740), 3, sym__newline, - anon_sym_in, + anon_sym_COMMA, anon_sym_SEMI, - [66463] = 4, + [67924] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1895), 1, - anon_sym_RPAREN, - ACTIONS(2931), 1, + ACTIONS(2936), 1, sym_identifier, - STATE(1558), 1, - sym_match_keyword_pattern, - [66476] = 3, - ACTIONS(3), 1, - sym_comment, ACTIONS(2946), 1, - anon_sym_EQ, - ACTIONS(2948), 2, - sym__newline, - anon_sym_SEMI, - [66487] = 4, + anon_sym_RPAREN, + STATE(1592), 1, + sym_match_keyword_pattern, + [67937] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2880), 1, - anon_sym_COMMA, + ACTIONS(2948), 1, + anon_sym_RPAREN, ACTIONS(2950), 1, - anon_sym_RBRACK, - STATE(1492), 1, - aux_sym_index_expression_list_repeat1, - [66500] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2952), 1, anon_sym_COMMA, - ACTIONS(2954), 1, - anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [66513] = 4, + STATE(1427), 1, + aux_sym_match_class_pattern_repeat1, + [67950] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2956), 1, + ACTIONS(2729), 3, + sym__newline, anon_sym_COMMA, - ACTIONS(2958), 1, - anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [66526] = 4, + anon_sym_SEMI, + [67959] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2382), 1, + ACTIONS(2946), 1, + anon_sym_RPAREN, + ACTIONS(2953), 1, anon_sym_COMMA, - ACTIONS(2384), 1, - anon_sym_RBRACE, - STATE(1485), 1, - aux_sym_dictionary_repeat1, - [66539] = 4, + STATE(1444), 1, + aux_sym_match_class_pattern_repeat2, + [67972] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2191), 1, + ACTIONS(2955), 1, anon_sym_RPAREN, - ACTIONS(2193), 1, + ACTIONS(2957), 1, anon_sym_COMMA, - STATE(1415), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [66552] = 4, + [67985] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2608), 1, + anon_sym_RBRACE, + ACTIONS(2610), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [67996] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, + anon_sym_COMMA, + ACTIONS(2220), 1, + anon_sym_RPAREN, + STATE(1471), 1, + aux_sym__collection_elements_repeat1, + [68009] = 4, ACTIONS(3), 1, sym_comment, + ACTIONS(2936), 1, + sym_identifier, ACTIONS(2960), 1, anon_sym_RPAREN, - ACTIONS(2962), 1, - anon_sym_COMMA, - STATE(1417), 1, - aux_sym_argument_list_repeat1, - [66565] = 4, + STATE(1592), 1, + sym_match_keyword_pattern, + [68022] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1895), 1, + ACTIONS(2962), 1, anon_sym_RPAREN, ACTIONS(2964), 1, anon_sym_COMMA, - STATE(1422), 1, - aux_sym_match_class_pattern_repeat2, - [66578] = 4, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [68035] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(2731), 1, + anon_sym_RBRACE, + STATE(1646), 1, + sym_format_specifier, + [68048] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2880), 1, - anon_sym_COMMA, ACTIONS(2966), 1, - anon_sym_RBRACK, - STATE(1492), 1, - aux_sym_index_expression_list_repeat1, - [66591] = 4, + anon_sym_EQ, + ACTIONS(2968), 2, + sym__newline, + anon_sym_SEMI, + [68059] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2968), 1, + ACTIONS(2970), 3, anon_sym_RPAREN, - ACTIONS(2970), 1, anon_sym_COMMA, - STATE(1392), 1, - aux_sym_argument_list_repeat1, - [66604] = 4, + anon_sym_COLON, + [68068] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2902), 1, + ACTIONS(2811), 1, + anon_sym_as, + ACTIONS(2729), 2, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2972), 1, - anon_sym_RBRACK, - STATE(1386), 1, - aux_sym_type_parameters_repeat1, - [66617] = 4, + [68079] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2974), 1, + ACTIONS(1916), 1, anon_sym_RPAREN, - ACTIONS(2976), 1, - anon_sym_COMMA, - STATE(1392), 1, - aux_sym_argument_list_repeat1, - [66630] = 4, + ACTIONS(2936), 1, + sym_identifier, + STATE(1592), 1, + sym_match_keyword_pattern, + [68092] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2978), 1, + ACTIONS(2757), 1, anon_sym_RPAREN, - ACTIONS(2980), 1, + ACTIONS(2972), 1, anon_sym_COMMA, - STATE(1392), 1, - aux_sym_argument_list_repeat1, - [66643] = 4, + STATE(1440), 1, + aux_sym__import_list_repeat1, + [68105] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(2722), 1, - anon_sym_RBRACE, - STATE(1641), 1, - sym_format_specifier, - [66656] = 2, + ACTIONS(2975), 1, + anon_sym_RPAREN, + ACTIONS(2977), 1, + anon_sym_COMMA, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [68118] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2780), 3, + ACTIONS(2979), 3, sym__newline, anon_sym_COMMA, anon_sym_SEMI, - [66665] = 2, + [68127] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2982), 3, - sym__newline, + ACTIONS(2981), 1, anon_sym_COMMA, - anon_sym_SEMI, - [66674] = 4, + ACTIONS(2984), 1, + anon_sym_RBRACK, + STATE(1443), 1, + aux_sym_index_expression_list_repeat1, + [68140] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2984), 1, - anon_sym_RPAREN, ACTIONS(2986), 1, + anon_sym_RPAREN, + ACTIONS(2988), 1, anon_sym_COMMA, - STATE(1422), 1, + STATE(1444), 1, aux_sym_match_class_pattern_repeat2, - [66687] = 4, + [68153] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, - anon_sym_COMMA, - ACTIONS(2187), 1, + ACTIONS(2900), 1, anon_sym_RPAREN, - STATE(1454), 1, - aux_sym__collection_elements_repeat1, - [66700] = 4, + ACTIONS(2991), 1, + anon_sym_COMMA, + STATE(1483), 1, + aux_sym__parameters_repeat1, + [68166] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1958), 1, - anon_sym_RBRACE, - ACTIONS(2989), 1, + ACTIONS(2337), 1, + anon_sym_from, + ACTIONS(2341), 2, + sym__newline, + anon_sym_SEMI, + [68177] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, anon_sym_COMMA, - STATE(1480), 1, - aux_sym_match_mapping_pattern_repeat1, - [66713] = 4, + ACTIONS(2129), 1, + anon_sym_RPAREN, + STATE(1471), 1, + aux_sym__collection_elements_repeat1, + [68190] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2444), 1, + ACTIONS(2993), 1, anon_sym_COMMA, - ACTIONS(2446), 1, + ACTIONS(2996), 1, anon_sym_RBRACE, - STATE(1426), 1, + STATE(1448), 1, aux_sym_dictionary_repeat1, - [66726] = 4, + [68203] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2991), 1, + ACTIONS(2998), 1, anon_sym_COMMA, - ACTIONS(2993), 1, + ACTIONS(3000), 1, anon_sym_RBRACE, - STATE(1401), 1, + STATE(1448), 1, aux_sym_dictionary_repeat1, - [66739] = 4, + [68216] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2995), 1, + ACTIONS(3002), 1, anon_sym_COMMA, - ACTIONS(2997), 1, + ACTIONS(3004), 1, anon_sym_RBRACE, - STATE(1401), 1, + STATE(1448), 1, aux_sym_dictionary_repeat1, - [66752] = 4, + [68229] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2900), 1, - anon_sym_RPAREN, - ACTIONS(2999), 1, - anon_sym_COMMA, - STATE(1376), 1, - aux_sym__parameters_repeat1, - [66765] = 4, + ACTIONS(2106), 1, + anon_sym_DOT, + ACTIONS(2170), 1, + anon_sym_COLON, + STATE(1039), 1, + aux_sym_match_value_pattern_repeat1, + [68242] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2205), 1, + ACTIONS(2228), 1, anon_sym_RPAREN, - ACTIONS(2207), 1, + ACTIONS(2230), 1, anon_sym_COMMA, - STATE(1435), 1, + STATE(1457), 1, aux_sym_argument_list_repeat1, - [66778] = 4, + [68255] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3001), 1, + ACTIONS(3006), 1, anon_sym_RPAREN, - ACTIONS(3003), 1, + ACTIONS(3008), 1, anon_sym_COMMA, - STATE(1436), 1, + STATE(1458), 1, aux_sym_argument_list_repeat1, - [66791] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2931), 1, - sym_identifier, - ACTIONS(3005), 1, - anon_sym_RPAREN, - STATE(1558), 1, - sym_match_keyword_pattern, - [66804] = 4, + [68268] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2880), 1, + ACTIONS(3010), 1, anon_sym_COMMA, - ACTIONS(3007), 1, + ACTIONS(3012), 1, anon_sym_RBRACK, - STATE(1492), 1, + STATE(1460), 1, aux_sym_index_expression_list_repeat1, - [66817] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3009), 1, - anon_sym_COMMA, - ACTIONS(3011), 1, - anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [66830] = 4, + [68281] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3013), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(3015), 1, - anon_sym_COLON, - STATE(1452), 1, - aux_sym_with_clause_repeat1, - [66843] = 4, + ACTIONS(3014), 1, + anon_sym_RPAREN, + STATE(1309), 1, + aux_sym__collection_elements_repeat1, + [68294] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3017), 1, + ACTIONS(3016), 1, anon_sym_RPAREN, - ACTIONS(3019), 1, + ACTIONS(3018), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [66856] = 4, + [68307] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3021), 1, + ACTIONS(3020), 1, anon_sym_RPAREN, - ACTIONS(3023), 1, + ACTIONS(3022), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [66869] = 4, + [68320] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3025), 1, + ACTIONS(3024), 1, anon_sym_RPAREN, - ACTIONS(3027), 1, + ACTIONS(3026), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [66882] = 4, + [68333] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1893), 1, + ACTIONS(3028), 1, anon_sym_RPAREN, - ACTIONS(3029), 1, + ACTIONS(3030), 1, anon_sym_COMMA, - STATE(1449), 1, - aux_sym_match_class_pattern_repeat2, - [66895] = 4, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [68346] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3031), 1, - anon_sym_RPAREN, - ACTIONS(3033), 1, + ACTIONS(3032), 1, anon_sym_COMMA, - STATE(1495), 1, - aux_sym_with_clause_repeat1, - [66908] = 4, + ACTIONS(3034), 1, + anon_sym_RBRACK, + STATE(1443), 1, + aux_sym_index_expression_list_repeat1, + [68359] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, + ACTIONS(2090), 1, anon_sym_COMMA, - ACTIONS(3035), 1, + ACTIONS(2180), 1, anon_sym_RPAREN, - STATE(1441), 1, + STATE(1471), 1, aux_sym__collection_elements_repeat1, - [66921] = 4, + [68372] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2595), 1, - anon_sym_RPAREN, - ACTIONS(3037), 1, + ACTIONS(2473), 1, + sym_identifier, + ACTIONS(3036), 1, + anon_sym_import, + STATE(1709), 1, + sym_dotted_name, + [68385] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2558), 1, + anon_sym_RBRACE, + ACTIONS(2560), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [68396] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2090), 1, anon_sym_COMMA, - STATE(1286), 1, + ACTIONS(2218), 1, + anon_sym_RPAREN, + STATE(1471), 1, aux_sym__collection_elements_repeat1, - [66934] = 3, + [68409] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3039), 1, - anon_sym_COLON, - ACTIONS(2794), 2, - anon_sym_RPAREN, + ACTIONS(2580), 1, + sym_identifier, + STATE(1438), 1, + sym_dotted_name, + STATE(1600), 1, + sym_aliased_import, + [68422] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3038), 1, anon_sym_COMMA, - [66945] = 4, + ACTIONS(3040), 1, + anon_sym_RBRACE, + STATE(1448), 1, + aux_sym_dictionary_repeat1, + [68435] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3041), 1, + ACTIONS(2646), 1, anon_sym_RPAREN, - ACTIONS(3043), 1, + ACTIONS(2809), 1, anon_sym_COMMA, - STATE(1443), 1, - aux_sym__parameters_repeat1, - [66958] = 2, + STATE(1414), 1, + aux_sym__import_list_repeat1, + [68448] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3041), 3, + ACTIONS(2232), 1, anon_sym_RPAREN, + ACTIONS(2234), 1, anon_sym_COMMA, - anon_sym_COLON, - [66967] = 2, + STATE(1521), 1, + aux_sym_argument_list_repeat1, + [68461] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3046), 3, + ACTIONS(3042), 1, anon_sym_RPAREN, + ACTIONS(3044), 1, anon_sym_COMMA, - anon_sym_COLON, - [66976] = 2, + STATE(1475), 1, + aux_sym_argument_list_repeat1, + [68474] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3048), 3, - anon_sym_LPAREN, - anon_sym_COLON, - anon_sym_EQ, - [66985] = 2, + ACTIONS(3010), 1, + anon_sym_COMMA, + ACTIONS(3046), 1, + anon_sym_RBRACK, + STATE(1460), 1, + aux_sym_index_expression_list_repeat1, + [68487] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2790), 3, + ACTIONS(2679), 1, anon_sym_RPAREN, + ACTIONS(3048), 1, anon_sym_COMMA, - anon_sym_COLON, - [66994] = 4, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + [68500] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(3050), 1, anon_sym_RPAREN, ACTIONS(3052), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [67007] = 4, + [68513] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3005), 1, - anon_sym_RPAREN, ACTIONS(3054), 1, + anon_sym_RPAREN, + ACTIONS(3056), 1, anon_sym_COMMA, - STATE(1422), 1, - aux_sym_match_class_pattern_repeat2, - [67020] = 4, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [68526] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3056), 1, - anon_sym_RPAREN, ACTIONS(3058), 1, anon_sym_COMMA, - STATE(1392), 1, - aux_sym_argument_list_repeat1, - [67033] = 4, + ACTIONS(3060), 1, + anon_sym_COLON, + STATE(1400), 1, + aux_sym_with_clause_repeat1, + [68539] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3060), 1, - anon_sym_RPAREN, ACTIONS(3062), 1, + anon_sym_RPAREN, + ACTIONS(3064), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1430), 1, aux_sym_argument_list_repeat1, - [67046] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3013), 1, - anon_sym_COMMA, - ACTIONS(3064), 1, - anon_sym_COLON, - STATE(1325), 1, - aux_sym_with_clause_repeat1, - [67059] = 4, + [68552] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2589), 1, - anon_sym_LPAREN, ACTIONS(3066), 1, - anon_sym_COLON, - STATE(1608), 1, - sym_argument_list, - [67072] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2595), 1, anon_sym_RPAREN, ACTIONS(3068), 1, anon_sym_COMMA, - STATE(1286), 1, - aux_sym__collection_elements_repeat1, - [67085] = 3, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(2581), 1, - anon_sym_RBRACE, - ACTIONS(2583), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [67096] = 4, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [68565] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2914), 1, - anon_sym_if, ACTIONS(3070), 1, - anon_sym_COLON, - STATE(1621), 1, - sym_guard, - [67109] = 4, + anon_sym_COMMA, + ACTIONS(3073), 1, + anon_sym_RBRACE, + STATE(1477), 1, + aux_sym_match_mapping_pattern_repeat1, + [68578] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(3072), 1, - anon_sym_RBRACE, - STATE(1699), 1, - sym_format_specifier, - [67122] = 4, + ACTIONS(3058), 1, + anon_sym_COMMA, + ACTIONS(3075), 1, + anon_sym_COLON, + STATE(1474), 1, + aux_sym_with_clause_repeat1, + [68591] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(2705), 1, + ACTIONS(3077), 1, + anon_sym_COMMA, + ACTIONS(3079), 1, anon_sym_RBRACE, - STATE(1692), 1, - sym_format_specifier, - [67135] = 4, + STATE(1448), 1, + aux_sym_dictionary_repeat1, + [68604] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3005), 1, + ACTIONS(1910), 1, anon_sym_RPAREN, - ACTIONS(3054), 1, + ACTIONS(3081), 1, anon_sym_COMMA, - STATE(1472), 1, - aux_sym_match_class_pattern_repeat2, - [67148] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2726), 1, - sym_identifier, - STATE(1382), 1, - sym_dotted_name, - STATE(1540), 1, - sym_aliased_import, - [67161] = 4, + STATE(1280), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [68617] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(2067), 1, + anon_sym_COLON, + ACTIONS(3083), 1, anon_sym_COMMA, - ACTIONS(3074), 1, - anon_sym_in, - STATE(1010), 1, - aux_sym__patterns_repeat1, - [67174] = 4, + STATE(1487), 1, + aux_sym__parameters_repeat1, + [68630] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3076), 1, + ACTIONS(2194), 1, anon_sym_RPAREN, - ACTIONS(3078), 1, + ACTIONS(2196), 1, anon_sym_COMMA, - STATE(1392), 1, + STATE(1473), 1, aux_sym_argument_list_repeat1, - [67187] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2390), 3, - sym__newline, - anon_sym_EQ, - anon_sym_SEMI, - [67196] = 2, + [68643] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1274), 3, + ACTIONS(2067), 1, anon_sym_RPAREN, + ACTIONS(3085), 1, anon_sym_COMMA, - anon_sym_COLON, - [67205] = 2, + STATE(1519), 1, + aux_sym__parameters_repeat1, + [68656] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3080), 3, + ACTIONS(3087), 1, anon_sym_RPAREN, + ACTIONS(3089), 1, anon_sym_COMMA, - anon_sym_COLON, - [67214] = 4, + STATE(1513), 1, + aux_sym_with_clause_repeat1, + [68669] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1546), 3, + sym__newline, + anon_sym_in, + anon_sym_SEMI, + [68678] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2891), 1, + ACTIONS(2222), 1, anon_sym_RPAREN, - ACTIONS(3082), 1, + ACTIONS(2224), 1, anon_sym_COMMA, - STATE(1399), 1, - aux_sym_match_class_pattern_repeat1, - [67227] = 4, + STATE(1413), 1, + aux_sym_argument_list_repeat1, + [68691] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2931), 1, - sym_identifier, - ACTIONS(3084), 1, - anon_sym_RPAREN, - STATE(1558), 1, - sym_match_keyword_pattern, - [67240] = 4, + ACTIONS(2970), 1, + anon_sym_COLON, + ACTIONS(3091), 1, + anon_sym_COMMA, + STATE(1487), 1, + aux_sym__parameters_repeat1, + [68704] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3086), 1, + ACTIONS(3094), 1, anon_sym_RPAREN, - ACTIONS(3088), 1, + ACTIONS(3096), 1, anon_sym_COMMA, - STATE(1468), 1, + STATE(1500), 1, aux_sym_match_class_pattern_repeat1, - [67253] = 4, + [68717] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3091), 1, + ACTIONS(3098), 1, anon_sym_COMMA, - ACTIONS(3093), 1, + ACTIONS(3100), 1, anon_sym_RBRACK, - STATE(1503), 1, + STATE(1528), 1, aux_sym_open_sequence_match_pattern_repeat1, - [67266] = 2, + [68730] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1517), 3, - sym__newline, - anon_sym_in, - anon_sym_SEMI, - [67275] = 4, + ACTIONS(3102), 1, + anon_sym_RPAREN, + ACTIONS(3104), 1, + anon_sym_COMMA, + STATE(1434), 1, + aux_sym_argument_list_repeat1, + [68743] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2048), 1, + ACTIONS(2618), 1, + anon_sym_LPAREN, + ACTIONS(3106), 1, anon_sym_COLON, - ACTIONS(3095), 1, - anon_sym_COMMA, - STATE(1506), 1, - aux_sym__parameters_repeat1, - [67288] = 4, + STATE(1634), 1, + sym_argument_list, + [68756] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(3108), 1, + anon_sym_RBRACE, + STATE(1621), 1, + sym_format_specifier, + [68769] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3084), 1, + ACTIONS(3094), 1, anon_sym_RPAREN, - ACTIONS(3097), 1, + ACTIONS(3110), 1, anon_sym_COMMA, - STATE(1422), 1, + STATE(1506), 1, aux_sym_match_class_pattern_repeat2, - [67301] = 4, + [68782] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(2742), 3, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(3099), 1, - anon_sym_in, - STATE(1010), 1, - aux_sym__patterns_repeat1, - [67314] = 4, + anon_sym_COLON, + [68791] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, - anon_sym_COMMA, - ACTIONS(3101), 1, - anon_sym_RPAREN, - STATE(1259), 1, - aux_sym__collection_elements_repeat1, - [67327] = 3, + ACTIONS(2902), 1, + anon_sym_if, + ACTIONS(3112), 1, + anon_sym_COLON, + STATE(1647), 1, + sym_guard, + [68804] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2293), 1, - anon_sym_from, - ACTIONS(2297), 2, - sym__newline, - anon_sym_SEMI, - [67338] = 4, + ACTIONS(2232), 1, + anon_sym_RPAREN, + ACTIONS(2234), 1, + anon_sym_COMMA, + STATE(1523), 1, + aux_sym_argument_list_repeat1, + [68817] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2931), 1, - sym_identifier, - ACTIONS(3103), 1, + ACTIONS(3114), 1, anon_sym_RPAREN, - STATE(1558), 1, - sym_match_keyword_pattern, - [67351] = 4, + ACTIONS(3116), 1, + anon_sym_COMMA, + STATE(1525), 1, + aux_sym_argument_list_repeat1, + [68830] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3105), 1, + ACTIONS(3118), 1, anon_sym_COMMA, - ACTIONS(3107), 1, + ACTIONS(3120), 1, anon_sym_RBRACE, - STATE(1424), 1, + STATE(1423), 1, aux_sym_match_mapping_pattern_repeat1, - [67364] = 4, - ACTIONS(3), 1, + [68843] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2091), 1, - anon_sym_DOT, - ACTIONS(2114), 1, - anon_sym_COLON, - STATE(1032), 1, - aux_sym_match_value_pattern_repeat1, - [67377] = 3, + ACTIONS(3122), 1, + anon_sym_RBRACE, + ACTIONS(3124), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [68854] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2798), 1, - anon_sym_EQ, - ACTIONS(2794), 2, + ACTIONS(1914), 1, + anon_sym_RPAREN, + ACTIONS(3126), 1, anon_sym_COMMA, - anon_sym_COLON, - [67388] = 4, + STATE(1427), 1, + aux_sym_match_class_pattern_repeat1, + [68867] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3109), 1, + ACTIONS(3010), 1, anon_sym_COMMA, - ACTIONS(3112), 1, + ACTIONS(3128), 1, + anon_sym_RBRACK, + STATE(1460), 1, + aux_sym_index_expression_list_repeat1, + [68880] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(2797), 1, anon_sym_RBRACE, - STATE(1480), 1, - aux_sym_match_mapping_pattern_repeat1, - [67401] = 4, + STATE(1741), 1, + sym_format_specifier, + [68893] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3114), 1, - anon_sym_RPAREN, - ACTIONS(3116), 1, - anon_sym_COMMA, - STATE(1392), 1, - aux_sym_argument_list_repeat1, - [67414] = 3, - ACTIONS(2065), 1, + ACTIONS(2413), 1, + sym_identifier, + STATE(1329), 1, + sym_dotted_name, + STATE(1428), 1, + sym_aliased_import, + [68906] = 4, + ACTIONS(3), 1, sym_comment, - ACTIONS(2490), 1, - anon_sym_RBRACE, - ACTIONS(2492), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [67425] = 4, + ACTIONS(2031), 1, + anon_sym_COMMA, + ACTIONS(3130), 1, + anon_sym_in, + STATE(1018), 1, + aux_sym__patterns_repeat1, + [68919] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3118), 1, + ACTIONS(1914), 1, anon_sym_RPAREN, - ACTIONS(3120), 1, - anon_sym_COMMA, - STATE(1392), 1, - aux_sym_argument_list_repeat1, - [67438] = 4, + ACTIONS(2936), 1, + sym_identifier, + STATE(1592), 1, + sym_match_keyword_pattern, + [68932] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1889), 1, + ACTIONS(1914), 1, anon_sym_RPAREN, - ACTIONS(3122), 1, + ACTIONS(3132), 1, anon_sym_COMMA, - STATE(1242), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [67451] = 4, + STATE(1444), 1, + aux_sym_match_class_pattern_repeat2, + [68945] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3124), 1, + ACTIONS(3134), 1, + anon_sym_COLON, + ACTIONS(2853), 2, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(3126), 1, + [68956] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2562), 1, anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [67464] = 2, + ACTIONS(2564), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [68967] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2713), 3, + ACTIONS(1550), 3, sym__newline, - anon_sym_COMMA, + anon_sym_in, anon_sym_SEMI, - [67473] = 4, + [68976] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2824), 1, - anon_sym_RPAREN, - ACTIONS(3128), 1, + ACTIONS(3136), 3, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_EQ, + [68985] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3138), 1, anon_sym_COMMA, - STATE(1384), 1, - aux_sym__import_list_repeat1, - [67486] = 4, + ACTIONS(3141), 1, + anon_sym_RBRACK, + STATE(1511), 1, + aux_sym_type_parameters_repeat1, + [68998] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2824), 1, + ACTIONS(3143), 3, anon_sym_RPAREN, - ACTIONS(3130), 1, anon_sym_COMMA, - STATE(1384), 1, - aux_sym__import_list_repeat1, - [67499] = 4, + anon_sym_COLON, + [69007] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2069), 1, - anon_sym_COMMA, - ACTIONS(2209), 1, + ACTIONS(1018), 1, anon_sym_RPAREN, - STATE(1454), 1, - aux_sym__collection_elements_repeat1, - [67512] = 4, + ACTIONS(3145), 1, + anon_sym_COMMA, + STATE(1400), 1, + aux_sym_with_clause_repeat1, + [69020] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3147), 1, + sym_identifier, + ACTIONS(3149), 1, + sym_match_wildcard_pattern, + STATE(1312), 1, + sym_match_capture_pattern, + [69033] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2472), 1, + ACTIONS(2031), 1, anon_sym_COMMA, - ACTIONS(2474), 1, - anon_sym_RBRACE, - STATE(1389), 1, - aux_sym_dictionary_repeat1, - [67525] = 4, + ACTIONS(3151), 1, + anon_sym_in, + STATE(1018), 1, + aux_sym__patterns_repeat1, + [69046] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3132), 1, + ACTIONS(2857), 1, + anon_sym_EQ, + ACTIONS(2853), 2, anon_sym_COMMA, - ACTIONS(3134), 1, + anon_sym_COLON, + [69057] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2591), 1, anon_sym_RBRACE, - STATE(1401), 1, - aux_sym_dictionary_repeat1, - [67538] = 4, + ACTIONS(2593), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [69068] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3136), 1, + ACTIONS(3010), 1, anon_sym_COMMA, - ACTIONS(3138), 1, + ACTIONS(3153), 1, anon_sym_RBRACK, - STATE(1378), 1, + STATE(1460), 1, aux_sym_index_expression_list_repeat1, - [67551] = 4, + [69081] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2589), 1, + ACTIONS(2970), 1, + anon_sym_RPAREN, + ACTIONS(3155), 1, + anon_sym_COMMA, + STATE(1519), 1, + aux_sym__parameters_repeat1, + [69094] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2618), 1, anon_sym_LPAREN, - ACTIONS(3140), 1, + ACTIONS(3158), 1, anon_sym_COLON, - STATE(1666), 1, + STATE(1663), 1, sym_argument_list, - [67564] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2613), 1, - anon_sym_COLON2, - ACTIONS(3142), 1, - anon_sym_RBRACE, - STATE(1644), 1, - sym_format_specifier, - [67577] = 4, + [69107] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1017), 1, + ACTIONS(3160), 1, anon_sym_RPAREN, - ACTIONS(3144), 1, + ACTIONS(3162), 1, anon_sym_COMMA, - STATE(1325), 1, - aux_sym_with_clause_repeat1, - [67590] = 4, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [69120] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(2881), 3, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(3146), 1, - anon_sym_in, - STATE(1010), 1, - aux_sym__patterns_repeat1, - [67603] = 3, - ACTIONS(2065), 1, - sym_comment, - ACTIONS(3148), 1, - anon_sym_RBRACE, - ACTIONS(3150), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [67614] = 4, + anon_sym_COLON, + [69129] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2593), 1, - anon_sym_LBRACK, - ACTIONS(3152), 1, - anon_sym_EQ, - STATE(1647), 1, - sym_type_parameters, - [67627] = 4, + ACTIONS(3164), 1, + anon_sym_RPAREN, + ACTIONS(3166), 1, + anon_sym_COMMA, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [69142] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2376), 1, - sym_identifier, - STATE(1306), 1, - sym_dotted_name, - STATE(1486), 1, - sym_aliased_import, - [67640] = 4, + ACTIONS(3168), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + [69151] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(3170), 1, + anon_sym_RPAREN, + ACTIONS(3172), 1, anon_sym_COMMA, - ACTIONS(3154), 1, - anon_sym_in, - STATE(1010), 1, - aux_sym__patterns_repeat1, - [67653] = 2, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [69164] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2748), 3, + ACTIONS(3174), 1, anon_sym_RPAREN, + ACTIONS(3176), 1, anon_sym_COMMA, - anon_sym_COLON, - [67662] = 3, - ACTIONS(2065), 1, + STATE(1430), 1, + aux_sym_argument_list_repeat1, + [69177] = 4, + ACTIONS(3), 1, sym_comment, - ACTIONS(2486), 1, + ACTIONS(2638), 1, + anon_sym_COLON2, + ACTIONS(3178), 1, anon_sym_RBRACE, - ACTIONS(2488), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [67673] = 4, + STATE(1656), 1, + sym_format_specifier, + [69190] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1889), 1, + ACTIONS(1910), 1, anon_sym_RBRACK, - ACTIONS(3156), 1, + ACTIONS(3180), 1, anon_sym_COMMA, - STATE(1242), 1, + STATE(1280), 1, aux_sym_open_sequence_match_pattern_repeat1, - [67686] = 4, + [69203] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2489), 3, + sym__newline, + anon_sym_EQ, + anon_sym_SEMI, + [69212] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(2031), 1, anon_sym_COMMA, - ACTIONS(3158), 1, + ACTIONS(3182), 1, anon_sym_in, - STATE(1010), 1, + STATE(1018), 1, aux_sym__patterns_repeat1, - [67699] = 4, + [69225] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2010), 1, + ACTIONS(2031), 1, anon_sym_COMMA, - ACTIONS(3160), 1, + ACTIONS(3184), 1, anon_sym_in, - STATE(1010), 1, + STATE(1018), 1, aux_sym__patterns_repeat1, - [67712] = 4, + [69238] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3041), 1, - anon_sym_COLON, - ACTIONS(3162), 1, + ACTIONS(2031), 1, anon_sym_COMMA, - STATE(1506), 1, - aux_sym__parameters_repeat1, - [67725] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3165), 2, - sym__newline, - anon_sym_SEMI, - [67733] = 2, + ACTIONS(3186), 1, + anon_sym_in, + STATE(1018), 1, + aux_sym__patterns_repeat1, + [69251] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3167), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [67741] = 3, + ACTIONS(1088), 2, + anon_sym_except, + anon_sym_finally, + [69259] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3169), 1, + ACTIONS(3188), 2, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1294), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [67751] = 3, + [69267] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2357), 1, + ACTIONS(3190), 2, anon_sym_COMMA, - STATE(1229), 1, - aux_sym_expression_list_repeat1, - [67761] = 3, + anon_sym_RBRACK, + [69275] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3171), 1, + ACTIONS(3192), 2, anon_sym_COLON, - ACTIONS(3173), 1, anon_sym_DASH_GT, - [67771] = 3, + [69283] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2703), 1, - anon_sym_LPAREN, - STATE(1539), 1, - sym_parameters, - [67781] = 3, + ACTIONS(3194), 1, + sym_identifier, + STATE(1609), 1, + sym_match_capture_pattern, + [69293] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3175), 1, + ACTIONS(3196), 1, anon_sym_COLON, - ACTIONS(3177), 1, + ACTIONS(3198), 1, anon_sym_DASH_GT, - [67791] = 2, + [69303] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3179), 2, - sym__newline, - anon_sym_SEMI, - [67799] = 2, + ACTIONS(2710), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [69311] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1027), 2, - anon_sym_except, - anon_sym_finally, - [67807] = 2, + ACTIONS(3200), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [69319] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3202), 1, + anon_sym_COLON, + ACTIONS(3204), 1, + anon_sym_DASH_GT, + [69329] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3181), 2, + ACTIONS(2979), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - [67815] = 2, + [69337] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2837), 2, - sym__newline, - anon_sym_SEMI, - [67823] = 2, + ACTIONS(2106), 1, + anon_sym_DOT, + STATE(1451), 1, + aux_sym_match_value_pattern_repeat1, + [69347] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3206), 1, + anon_sym_COLON, + ACTIONS(3208), 1, + anon_sym_DASH_GT, + [69357] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3183), 2, + ACTIONS(2433), 2, sym__newline, anon_sym_SEMI, - [67831] = 2, + [69365] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2607), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [67839] = 2, + ACTIONS(3210), 1, + anon_sym_COLON, + ACTIONS(3212), 1, + anon_sym_DASH_GT, + [69375] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2794), 2, - anon_sym_COMMA, + ACTIONS(2465), 1, + anon_sym_as, + ACTIONS(2467), 1, anon_sym_COLON, - [67847] = 2, + [69385] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1045), 2, - anon_sym_except, - anon_sym_finally, - [67855] = 2, + ACTIONS(3214), 1, + anon_sym_COLON, + ACTIONS(3216), 1, + anon_sym_DASH_GT, + [69395] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3185), 2, + ACTIONS(3218), 2, anon_sym_COMMA, - anon_sym_RBRACK, - [67863] = 2, + anon_sym_RBRACE, + [69403] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3187), 2, - sym__newline, - anon_sym_SEMI, - [67871] = 2, + ACTIONS(3220), 2, + anon_sym_COLON, + anon_sym_DASH_GT, + [69411] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3189), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [67879] = 2, + ACTIONS(2469), 1, + anon_sym_as, + ACTIONS(2471), 1, + anon_sym_COLON, + [69421] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3191), 2, + ACTIONS(3222), 2, sym__newline, anon_sym_SEMI, - [67887] = 2, + [69429] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3193), 2, - anon_sym_RPAREN, + ACTIONS(3120), 1, + anon_sym_RBRACE, + ACTIONS(3224), 1, anon_sym_COMMA, - [67895] = 2, + [69439] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3195), 2, + ACTIONS(2497), 2, sym__newline, anon_sym_SEMI, - [67903] = 2, + [69447] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3197), 2, - sym__newline, - anon_sym_SEMI, - [67911] = 2, + ACTIONS(1989), 1, + anon_sym_RBRACE, + ACTIONS(3226), 1, + anon_sym_COMMA, + [69457] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3228), 1, + sym_integer, + ACTIONS(3230), 1, + sym_float, + [69467] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3199), 2, + ACTIONS(3073), 2, anon_sym_COMMA, - anon_sym_RBRACK, - [67919] = 2, + anon_sym_RBRACE, + [69475] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3201), 2, - sym__newline, - anon_sym_SEMI, - [67927] = 2, + ACTIONS(2948), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [69483] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3203), 2, + ACTIONS(3232), 2, sym__newline, anon_sym_SEMI, - [67935] = 2, + [69491] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3205), 2, - sym__newline, - anon_sym_SEMI, - [67943] = 2, + ACTIONS(3234), 1, + anon_sym_COLON, + ACTIONS(3236), 1, + anon_sym_DASH_GT, + [69501] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3207), 2, + ACTIONS(3238), 2, sym__newline, anon_sym_SEMI, - [67951] = 2, + [69509] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3086), 2, - anon_sym_RPAREN, + ACTIONS(3240), 2, anon_sym_COMMA, - [67959] = 2, + anon_sym_RBRACK, + [69517] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3209), 2, - sym__newline, - anon_sym_SEMI, - [67967] = 2, + ACTIONS(3242), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [69525] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1031), 2, - anon_sym_except, - anon_sym_finally, - [67975] = 2, + ACTIONS(2439), 1, + anon_sym_as, + ACTIONS(2441), 1, + anon_sym_COLON, + [69535] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2236), 2, + ACTIONS(3244), 2, sym__newline, anon_sym_SEMI, - [67983] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1037), 2, - anon_sym_except, - anon_sym_finally, - [67991] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3211), 1, - anon_sym_COLON, - ACTIONS(3213), 1, - anon_sym_DASH_GT, - [68001] = 2, + [69543] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2713), 2, - anon_sym_RPAREN, + ACTIONS(2702), 2, anon_sym_COMMA, - [68009] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3215), 1, - anon_sym_COLON, - ACTIONS(3217), 1, - anon_sym_DASH_GT, - [68019] = 2, + anon_sym_RBRACK, + [69551] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3219), 2, + ACTIONS(3246), 2, anon_sym_COMMA, anon_sym_RBRACE, - [68027] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3221), 1, - anon_sym_COLON, - ACTIONS(3223), 1, - anon_sym_DASH_GT, - [68037] = 3, + [69559] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3225), 1, + ACTIONS(3248), 1, anon_sym_COMMA, - ACTIONS(3227), 1, + ACTIONS(3250), 1, anon_sym_RBRACE, - [68047] = 2, + [69569] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2982), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [68055] = 3, + ACTIONS(2276), 2, + sym__newline, + anon_sym_SEMI, + [69577] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3229), 1, - anon_sym_COLON, - ACTIONS(3231), 1, - anon_sym_DASH_GT, - [68065] = 2, + ACTIONS(3252), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [69585] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3233), 2, - anon_sym_COLON, - anon_sym_DASH_GT, - [68073] = 3, + ACTIONS(3254), 2, + sym__newline, + anon_sym_SEMI, + [69593] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2460), 1, - anon_sym_as, - ACTIONS(2462), 1, - anon_sym_COLON, - [68083] = 3, + ACTIONS(2877), 1, + anon_sym_LPAREN, + STATE(1576), 1, + sym_parameters, + [69603] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2295), 1, + ACTIONS(2393), 1, anon_sym_COMMA, - STATE(1278), 1, + STATE(1273), 1, aux_sym_expression_list_repeat1, - [68093] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2464), 1, - anon_sym_as, - ACTIONS(2466), 1, - anon_sym_COLON, - [68103] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2424), 2, - sym__newline, - anon_sym_SEMI, - [68111] = 3, + [69613] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2468), 1, - anon_sym_as, - ACTIONS(2470), 1, - anon_sym_COLON, - [68121] = 3, + ACTIONS(2877), 1, + anon_sym_LPAREN, + STATE(1560), 1, + sym_parameters, + [69623] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2918), 1, + ACTIONS(3256), 2, anon_sym_COMMA, - ACTIONS(3235), 1, - anon_sym_RPAREN, - [68131] = 3, + anon_sym_RBRACK, + [69631] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3237), 1, + ACTIONS(3258), 1, anon_sym_COLON, - ACTIONS(3239), 1, + ACTIONS(3260), 1, anon_sym_DASH_GT, - [68141] = 2, + [69641] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3241), 2, + ACTIONS(3262), 2, anon_sym_COMMA, anon_sym_RBRACK, - [68149] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3243), 1, - anon_sym_COMMA, - STATE(1484), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [68159] = 3, + [69649] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2703), 1, - anon_sym_LPAREN, - STATE(1513), 1, - sym_parameters, - [68169] = 2, + ACTIONS(2715), 2, + sym__newline, + anon_sym_SEMI, + [69657] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2984), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [68177] = 3, + ACTIONS(3264), 2, + sym__newline, + anon_sym_SEMI, + [69665] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3245), 1, - sym_integer, - ACTIONS(3247), 1, - sym_float, - [68187] = 3, + ACTIONS(3266), 2, + sym__newline, + anon_sym_SEMI, + [69673] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2931), 1, - sym_identifier, - STATE(1558), 1, - sym_match_keyword_pattern, - [68197] = 3, + ACTIONS(3268), 2, + sym__newline, + anon_sym_SEMI, + [69681] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3249), 1, - sym_identifier, - STATE(1581), 1, - sym_match_capture_pattern, - [68207] = 3, + ACTIONS(1054), 2, + anon_sym_except, + anon_sym_finally, + [69689] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2091), 1, - anon_sym_DOT, - STATE(1478), 1, - aux_sym_match_value_pattern_repeat1, - [68217] = 2, + ACTIONS(1022), 2, + anon_sym_except, + anon_sym_finally, + [69697] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3251), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [68225] = 3, + ACTIONS(3270), 2, + sym__newline, + anon_sym_SEMI, + [69705] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3107), 1, - anon_sym_RBRACE, - ACTIONS(3253), 1, - anon_sym_COMMA, - [68235] = 3, + ACTIONS(3272), 2, + sym__newline, + anon_sym_SEMI, + [69713] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2428), 1, - anon_sym_as, - ACTIONS(2432), 1, - anon_sym_COLON, - [68245] = 3, + ACTIONS(3274), 2, + sym__newline, + anon_sym_SEMI, + [69721] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3255), 1, + ACTIONS(3276), 1, sym_integer, - ACTIONS(3257), 1, + ACTIONS(3278), 1, sym_float, - [68255] = 3, + [69731] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2232), 1, + ACTIONS(2260), 1, anon_sym_COMMA, - STATE(1251), 1, + STATE(1272), 1, aux_sym_expression_list_repeat1, - [68265] = 2, + [69741] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3259), 2, + ACTIONS(3280), 2, sym__newline, anon_sym_SEMI, - [68273] = 3, + [69749] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1992), 1, - anon_sym_RBRACE, - ACTIONS(3261), 1, + ACTIONS(2339), 1, anon_sym_COMMA, - [68283] = 2, + STATE(1286), 1, + aux_sym_expression_list_repeat1, + [69759] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2491), 2, + sym__newline, + anon_sym_SEMI, + [69767] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2601), 2, + ACTIONS(2986), 2, anon_sym_RPAREN, anon_sym_COMMA, - [68291] = 2, + [69775] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3263), 2, - anon_sym_COLON, - anon_sym_DASH_GT, - [68299] = 2, + ACTIONS(2936), 1, + sym_identifier, + STATE(1592), 1, + sym_match_keyword_pattern, + [69785] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2404), 2, - sym__newline, - anon_sym_SEMI, - [68307] = 2, + ACTIONS(2399), 1, + anon_sym_as, + ACTIONS(2403), 1, + anon_sym_COLON, + [69795] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3112), 2, + ACTIONS(3282), 1, anon_sym_COMMA, - anon_sym_RBRACE, - [68315] = 3, + STATE(1382), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [69805] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3265), 1, - sym_integer, - ACTIONS(3267), 1, - sym_float, - [68325] = 2, + ACTIONS(3284), 2, + sym__newline, + anon_sym_SEMI, + [69813] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3269), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [68333] = 3, + ACTIONS(2877), 1, + anon_sym_LPAREN, + STATE(1544), 1, + sym_parameters, + [69823] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1026), 2, + anon_sym_except, + anon_sym_finally, + [69831] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2703), 1, + ACTIONS(2877), 1, anon_sym_LPAREN, STATE(1546), 1, sym_parameters, - [68343] = 2, + [69841] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3271), 2, + ACTIONS(2729), 2, anon_sym_RPAREN, anon_sym_COMMA, - [68351] = 3, + [69849] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2703), 1, - anon_sym_LPAREN, - STATE(1582), 1, - sym_parameters, - [68361] = 2, + ACTIONS(2906), 1, + anon_sym_COMMA, + ACTIONS(3286), 1, + anon_sym_RPAREN, + [69859] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3288), 1, + anon_sym_COMMA, + STATE(1480), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [69869] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2406), 2, + ACTIONS(3290), 2, sym__newline, anon_sym_SEMI, - [68369] = 2, + [69877] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1081), 2, - anon_sym_except, - anon_sym_finally, - [68377] = 2, + ACTIONS(3292), 1, + sym_integer, + ACTIONS(3294), 1, + sym_float, + [69887] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3273), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [68385] = 3, + ACTIONS(3296), 2, + sym__newline, + anon_sym_SEMI, + [69895] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3275), 1, + ACTIONS(2853), 2, + anon_sym_COMMA, anon_sym_COLON, - ACTIONS(3277), 1, - anon_sym_DASH_GT, - [68395] = 2, + [69903] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3279), 1, - anon_sym_COLON, - [68402] = 2, + ACTIONS(1079), 2, + anon_sym_except, + anon_sym_finally, + [69911] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3281), 1, - anon_sym_RPAREN, - [68409] = 2, + ACTIONS(3298), 2, + sym__newline, + anon_sym_SEMI, + [69919] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3283), 1, - sym_identifier, - [68416] = 2, + ACTIONS(3300), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [69927] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3285), 1, - anon_sym_RPAREN, - [68423] = 2, + ACTIONS(3302), 2, + sym__newline, + anon_sym_SEMI, + [69935] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2705), 1, - anon_sym_RBRACE, - [68430] = 2, + ACTIONS(3304), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [69943] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3287), 1, + ACTIONS(3306), 1, anon_sym_COLON, - [68437] = 2, + ACTIONS(3308), 1, + anon_sym_DASH_GT, + [69953] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3289), 1, + ACTIONS(3310), 1, anon_sym_COLON, - [68444] = 2, + [69960] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3291), 1, - anon_sym_COLON, - [68451] = 2, + ACTIONS(3012), 1, + anon_sym_RBRACK, + [69967] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3293), 1, + ACTIONS(3312), 1, anon_sym_RPAREN, - [68458] = 2, + [69974] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3295), 1, - anon_sym_RPAREN, - [68465] = 2, + ACTIONS(3314), 1, + sym_identifier, + [69981] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3297), 1, - anon_sym_COLON, - [68472] = 2, + ACTIONS(3316), 1, + sym_identifier, + [69988] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3299), 1, - anon_sym_RBRACK, - [68479] = 2, + ACTIONS(3318), 1, + anon_sym_RPAREN, + [69995] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3301), 1, - anon_sym_for, - [68486] = 2, + ACTIONS(3320), 1, + anon_sym_in, + [70002] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3303), 1, - anon_sym_RBRACE, - [68493] = 2, + ACTIONS(3322), 1, + anon_sym_import, + [70009] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3305), 1, - anon_sym_COLON, - [68500] = 2, + ACTIONS(3324), 1, + anon_sym_RBRACE, + [70016] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3307), 1, + ACTIONS(3326), 1, anon_sym_COLON, - [68507] = 2, + [70023] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3309), 1, - sym_identifier, - [68514] = 2, + ACTIONS(3328), 1, + anon_sym_for, + [70030] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3311), 1, + ACTIONS(3330), 1, anon_sym_RBRACE, - [68521] = 2, + [70037] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3313), 1, + ACTIONS(3332), 1, + anon_sym_RPAREN, + [70044] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3334), 1, anon_sym_COLON, - [68528] = 2, + [70051] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3315), 1, + ACTIONS(3336), 1, anon_sym_RBRACE, - [68535] = 2, + [70058] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3338), 1, + anon_sym_RPAREN, + [70065] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(2535), 1, anon_sym_COLON, - [68542] = 2, + [70072] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3317), 1, + ACTIONS(3340), 1, anon_sym_COLON, - [68549] = 2, + [70079] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3319), 1, + ACTIONS(3342), 1, sym_identifier, - [68556] = 2, + [70086] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3321), 1, + ACTIONS(3344), 1, anon_sym_COLON, - [68563] = 2, + [70093] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2375), 1, + anon_sym_EQ, + [70100] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3323), 1, + ACTIONS(3346), 1, anon_sym_COLON, - [68570] = 2, + [70107] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3325), 1, + ACTIONS(3348), 1, anon_sym_COLON, - [68577] = 2, + [70114] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3327), 1, + ACTIONS(2541), 1, anon_sym_COLON, - [68584] = 2, + [70121] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2537), 1, + ACTIONS(3350), 1, anon_sym_COLON, - [68591] = 2, + [70128] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(963), 1, - anon_sym_STAR, - [68598] = 2, + ACTIONS(3352), 1, + anon_sym_import, + [70135] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3329), 1, - anon_sym_in, - [68605] = 2, + ACTIONS(3354), 1, + anon_sym_COLON, + [70142] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3331), 1, + ACTIONS(3356), 1, anon_sym_RPAREN, - [68612] = 2, + [70149] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3333), 1, - anon_sym_RBRACK, - [68619] = 2, + ACTIONS(3358), 1, + sym_identifier, + [70156] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3335), 1, - anon_sym_RPAREN, - [68626] = 2, + ACTIONS(3360), 1, + anon_sym_COLON, + [70163] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3337), 1, + ACTIONS(3362), 1, anon_sym_COLON, - [68633] = 2, + [70170] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3339), 1, + ACTIONS(3364), 1, anon_sym_COLON, - [68640] = 2, + [70177] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3341), 1, + ACTIONS(2572), 1, anon_sym_COLON, - [68647] = 2, + [70184] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3343), 1, - sym_identifier, - [68654] = 2, + ACTIONS(3108), 1, + anon_sym_RBRACE, + [70191] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3345), 1, + ACTIONS(3366), 1, anon_sym_COLON, - [68661] = 2, + [70198] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3347), 1, + ACTIONS(3368), 1, anon_sym_COLON, - [68668] = 2, + [70205] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3349), 1, + ACTIONS(3370), 1, anon_sym_COLON, - [68675] = 2, + [70212] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3227), 1, - anon_sym_RBRACE, - [68682] = 2, + ACTIONS(3372), 1, + anon_sym_LPAREN, + [70219] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3351), 1, - anon_sym_RBRACK, - [68689] = 2, + ACTIONS(2731), 1, + anon_sym_RBRACE, + [70226] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2543), 1, + ACTIONS(3374), 1, anon_sym_COLON, - [68696] = 2, + [70233] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3376), 1, + sym_identifier, + [70240] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3378), 1, + anon_sym_RPAREN, + [70247] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3353), 1, + ACTIONS(3380), 1, anon_sym_RPAREN, - [68703] = 2, + [70254] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3355), 1, + ACTIONS(3382), 1, anon_sym_RBRACE, - [68710] = 2, + [70261] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3384), 1, + anon_sym_RBRACK, + [70268] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3357), 1, + ACTIONS(3386), 1, anon_sym_RBRACK, - [68717] = 2, + [70275] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3359), 1, + ACTIONS(3388), 1, sym_identifier, - [68724] = 2, + [70282] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3361), 1, - anon_sym_COLON, - [68731] = 2, + ACTIONS(3128), 1, + anon_sym_RBRACK, + [70289] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3363), 1, - anon_sym_RBRACE, - [68738] = 2, + ACTIONS(3390), 1, + anon_sym_COLON, + [70296] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3365), 1, + ACTIONS(3392), 1, sym_identifier, - [68745] = 2, + [70303] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3367), 1, - anon_sym_RBRACK, - [68752] = 2, + ACTIONS(3394), 1, + anon_sym_COLON, + [70310] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3369), 1, - anon_sym_in, - [68759] = 2, + ACTIONS(3396), 1, + anon_sym_RBRACE, + [70317] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3371), 1, - anon_sym_RPAREN, - [68766] = 2, + ACTIONS(3398), 1, + anon_sym_RBRACE, + [70324] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3373), 1, - sym_identifier, - [68773] = 2, + ACTIONS(3400), 1, + anon_sym_RBRACE, + [70331] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2539), 1, + ACTIONS(3402), 1, anon_sym_COLON, - [68780] = 2, + [70338] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3375), 1, + ACTIONS(3404), 1, sym_identifier, - [68787] = 2, + [70345] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3377), 1, - anon_sym_COLON, - [68794] = 2, + ACTIONS(3406), 1, + anon_sym_RBRACK, + [70352] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3379), 1, - anon_sym_COLON, - [68801] = 2, + ACTIONS(3408), 1, + anon_sym_RPAREN, + [70359] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3072), 1, - anon_sym_RBRACE, - [68808] = 2, + ACTIONS(3410), 1, + anon_sym_RPAREN, + [70366] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3381), 1, - anon_sym_COLON, - [68815] = 2, + ACTIONS(3412), 1, + anon_sym_in, + [70373] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3383), 1, + ACTIONS(3414), 1, anon_sym_RPAREN, - [68822] = 2, + [70380] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3385), 1, - anon_sym_RBRACE, - [68829] = 2, + ACTIONS(3130), 1, + anon_sym_in, + [70387] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3387), 1, - anon_sym_RBRACE, - [68836] = 2, + ACTIONS(3416), 1, + anon_sym_RBRACK, + [70394] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3389), 1, - anon_sym_COLON, - [68843] = 2, + ACTIONS(3418), 1, + anon_sym_RBRACE, + [70401] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3391), 1, - anon_sym_EQ, - [68850] = 2, + ACTIONS(2797), 1, + anon_sym_RBRACE, + [70408] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3393), 1, - sym_identifier, - [68857] = 2, + ACTIONS(3186), 1, + anon_sym_in, + [70415] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3395), 1, - anon_sym_RBRACE, - [68864] = 2, + ACTIONS(3420), 1, + sym_identifier, + [70422] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3397), 1, + ACTIONS(3422), 1, anon_sym_RBRACE, - [68871] = 2, + [70429] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3399), 1, + ACTIONS(3424), 1, sym_identifier, - [68878] = 2, + [70436] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2722), 1, - anon_sym_RBRACE, - [68885] = 2, + ACTIONS(3426), 1, + anon_sym_RPAREN, + [70443] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3007), 1, - anon_sym_RBRACK, - [68892] = 2, + ACTIONS(3428), 1, + anon_sym_COLON, + [70450] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3401), 1, - anon_sym_import, - [68899] = 2, + ACTIONS(3430), 1, + anon_sym_RPAREN, + [70457] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3403), 1, - ts_builtin_sym_end, - [68906] = 2, + ACTIONS(3432), 1, + anon_sym_RBRACE, + [70464] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3405), 1, - anon_sym_RBRACK, - [68913] = 2, + ACTIONS(3434), 1, + anon_sym_RPAREN, + [70471] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3074), 1, - anon_sym_in, - [68920] = 2, + ACTIONS(2601), 1, + anon_sym_COLON, + [70478] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2337), 1, - anon_sym_EQ, - [68927] = 2, + ACTIONS(3436), 1, + anon_sym_RBRACE, + [70485] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3407), 1, - sym_identifier, - [68934] = 2, + ACTIONS(3438), 1, + anon_sym_COLON, + [70492] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2882), 1, + ACTIONS(3440), 1, anon_sym_RBRACK, - [68941] = 2, + [70499] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3146), 1, - anon_sym_in, - [68948] = 2, + ACTIONS(3442), 1, + anon_sym_COLON, + [70506] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1958), 1, - anon_sym_RBRACE, - [68955] = 2, + ACTIONS(3444), 1, + anon_sym_RBRACK, + [70513] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3409), 1, - anon_sym_RBRACE, - [68962] = 2, + ACTIONS(3446), 1, + anon_sym_COLON, + [70520] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3411), 1, - anon_sym_import, - [68969] = 2, + ACTIONS(3046), 1, + anon_sym_RBRACK, + [70527] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3413), 1, + ACTIONS(3448), 1, anon_sym_RBRACE, - [68976] = 2, + [70534] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3450), 1, + sym_identifier, + [70541] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3415), 1, + ACTIONS(3452), 1, anon_sym_COLON, - [68983] = 2, + [70548] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3417), 1, - sym_identifier, - [68990] = 2, + ACTIONS(3454), 1, + anon_sym_in, + [70555] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3419), 1, - anon_sym_COLON, - [68997] = 2, + ACTIONS(3456), 1, + sym_identifier, + [70562] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2966), 1, - anon_sym_RBRACK, - [69004] = 2, + ACTIONS(3458), 1, + anon_sym_RBRACE, + [70569] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3421), 1, + ACTIONS(3460), 1, anon_sym_COLON, - [69011] = 2, + [70576] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3423), 1, + ACTIONS(3462), 1, anon_sym_in, - [69018] = 2, + [70583] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3099), 1, - anon_sym_in, - [69025] = 2, + ACTIONS(3464), 1, + sym_identifier, + [70590] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3425), 1, + ACTIONS(3466), 1, anon_sym_COLON, - [69032] = 2, + [70597] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3427), 1, - anon_sym_in, - [69039] = 2, + ACTIONS(3468), 1, + sym_identifier, + [70604] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3429), 1, - anon_sym_RPAREN, - [69046] = 2, + ACTIONS(3470), 1, + anon_sym_COLON, + [70611] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3431), 1, - anon_sym_COLON, - [69053] = 2, + ACTIONS(3250), 1, + anon_sym_RBRACE, + [70618] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3433), 1, - anon_sym_RBRACK, - [69060] = 2, + ACTIONS(3472), 1, + ts_builtin_sym_end, + [70625] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3435), 1, - anon_sym_RBRACE, - [69067] = 2, + ACTIONS(3474), 1, + anon_sym_import, + [70632] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3437), 1, - anon_sym_RBRACK, - [69074] = 2, + ACTIONS(3476), 1, + anon_sym_in, + [70639] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3439), 1, - anon_sym_LPAREN, - [69081] = 2, + ACTIONS(3478), 1, + anon_sym_RPAREN, + [70646] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3441), 1, - sym_identifier, - [69088] = 2, + ACTIONS(3480), 1, + anon_sym_import, + [70653] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3443), 1, - anon_sym_COLON, - [69095] = 2, + ACTIONS(3482), 1, + anon_sym_RBRACK, + [70660] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3445), 1, + ACTIONS(3484), 1, anon_sym_RBRACE, - [69102] = 2, + [70667] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3447), 1, - anon_sym_RPAREN, - [69109] = 2, + ACTIONS(3486), 1, + anon_sym_COLON, + [70674] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1059), 1, - anon_sym_def, - [69116] = 2, + ACTIONS(3488), 1, + anon_sym_COLON, + [70681] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3449), 1, - anon_sym_RPAREN, - [69123] = 2, + ACTIONS(3490), 1, + anon_sym_RBRACE, + [70688] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3451), 1, - anon_sym_RBRACE, - [69130] = 2, + ACTIONS(2896), 1, + anon_sym_in, + [70695] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3453), 1, + ACTIONS(3492), 1, anon_sym_COLON, - [69137] = 2, + [70702] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3455), 1, + ACTIONS(3494), 1, anon_sym_COLON, - [69144] = 2, + [70709] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3457), 1, - anon_sym_COLON, - [69151] = 2, + ACTIONS(3496), 1, + anon_sym_RPAREN, + [70716] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3498), 1, + anon_sym_RBRACK, + [70723] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3459), 1, + ACTIONS(3500), 1, sym_identifier, - [69158] = 2, + [70730] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3142), 1, + ACTIONS(3502), 1, anon_sym_RBRACE, - [69165] = 2, + [70737] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2950), 1, - anon_sym_RBRACK, - [69172] = 2, + ACTIONS(3504), 1, + anon_sym_COLON, + [70744] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3461), 1, - anon_sym_RPAREN, - [69179] = 2, + ACTIONS(3506), 1, + anon_sym_COLON, + [70751] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3463), 1, - sym_identifier, - [69186] = 2, + ACTIONS(3508), 1, + anon_sym_RBRACE, + [70758] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3465), 1, - sym_identifier, - [69193] = 2, + ACTIONS(3510), 1, + anon_sym_RBRACE, + [70765] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3467), 1, + ACTIONS(3512), 1, anon_sym_COLON, - [69200] = 2, + [70772] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3469), 1, - sym_identifier, - [69207] = 2, + ACTIONS(3514), 1, + anon_sym_in, + [70779] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3471), 1, + ACTIONS(1997), 1, anon_sym_RBRACE, - [69214] = 2, + [70786] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3473), 1, - anon_sym_in, - [69221] = 2, + ACTIONS(3516), 1, + anon_sym_COLON, + [70793] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3475), 1, - anon_sym_RPAREN, - [69228] = 2, + ACTIONS(3518), 1, + anon_sym_RBRACE, + [70800] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3477), 1, - anon_sym_RPAREN, - [69235] = 2, + ACTIONS(3520), 1, + sym_identifier, + [70807] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3479), 1, - sym_identifier, - [69242] = 2, + ACTIONS(3153), 1, + anon_sym_RBRACK, + [70814] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(985), 1, + ACTIONS(990), 1, anon_sym_STAR, - [69249] = 2, + [70821] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3481), 1, - anon_sym_RBRACE, - [69256] = 2, + ACTIONS(3522), 1, + anon_sym_RPAREN, + [70828] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3483), 1, - anon_sym_RPAREN, - [69263] = 2, + ACTIONS(3524), 1, + anon_sym_EQ, + [70835] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3154), 1, - anon_sym_in, - [69270] = 2, + ACTIONS(968), 1, + anon_sym_STAR, + [70842] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3485), 1, - anon_sym_RBRACK, - [69277] = 2, + ACTIONS(1100), 1, + anon_sym_def, + [70849] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3487), 1, - anon_sym_import, - [69284] = 2, + ACTIONS(3178), 1, + anon_sym_RBRACE, + [70856] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3489), 1, - anon_sym_COLON, - [69291] = 2, + ACTIONS(3526), 1, + anon_sym_RPAREN, + [70863] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3491), 1, - anon_sym_COLON, - [69298] = 2, + ACTIONS(3528), 1, + sym_identifier, + [70870] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3493), 1, - anon_sym_COLON, - [69305] = 2, + ACTIONS(3530), 1, + sym_identifier, + [70877] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3495), 1, + ACTIONS(3532), 1, sym_identifier, - [69312] = 2, + [70884] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3497), 1, + ACTIONS(3534), 1, sym_identifier, - [69319] = 2, + [70891] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3499), 1, - anon_sym_RBRACE, - [69326] = 2, + ACTIONS(3536), 1, + anon_sym_COLON, + [70898] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3158), 1, + ACTIONS(3182), 1, anon_sym_in, - [69333] = 2, + [70905] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1089), 1, + ACTIONS(1122), 1, anon_sym_def, - [69340] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3501), 1, - anon_sym_RBRACE, - [69347] = 2, + [70912] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3160), 1, + ACTIONS(3151), 1, anon_sym_in, - [69354] = 2, + [70919] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3503), 1, + ACTIONS(3184), 1, anon_sym_in, - [69361] = 2, + [70926] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3505), 1, - anon_sym_RBRACE, - [69368] = 2, + ACTIONS(3538), 1, + anon_sym_COLON, + [70933] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3507), 1, + ACTIONS(3540), 1, anon_sym_COLON, + [70940] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3542), 1, + anon_sym_RBRACK, }; static const uint32_t ts_small_parse_table_map[] = { - [SMALL_STATE(156)] = 0, - [SMALL_STATE(157)] = 110, - [SMALL_STATE(158)] = 232, - [SMALL_STATE(159)] = 342, - [SMALL_STATE(160)] = 466, - [SMALL_STATE(161)] = 588, - [SMALL_STATE(162)] = 714, - [SMALL_STATE(163)] = 838, - [SMALL_STATE(164)] = 960, - [SMALL_STATE(165)] = 1081, - [SMALL_STATE(166)] = 1202, - [SMALL_STATE(167)] = 1323, - [SMALL_STATE(168)] = 1444, - [SMALL_STATE(169)] = 1558, - [SMALL_STATE(170)] = 1672, - [SMALL_STATE(171)] = 1781, - [SMALL_STATE(172)] = 1890, - [SMALL_STATE(173)] = 1999, - [SMALL_STATE(174)] = 2109, - [SMALL_STATE(175)] = 2221, - [SMALL_STATE(176)] = 2329, - [SMALL_STATE(177)] = 2441, - [SMALL_STATE(178)] = 2553, - [SMALL_STATE(179)] = 2661, - [SMALL_STATE(180)] = 2769, - [SMALL_STATE(181)] = 2877, - [SMALL_STATE(182)] = 2987, - [SMALL_STATE(183)] = 3099, - [SMALL_STATE(184)] = 3213, - [SMALL_STATE(185)] = 3325, - [SMALL_STATE(186)] = 3433, - [SMALL_STATE(187)] = 3541, - [SMALL_STATE(188)] = 3653, - [SMALL_STATE(189)] = 3765, - [SMALL_STATE(190)] = 3874, - [SMALL_STATE(191)] = 3979, - [SMALL_STATE(192)] = 4088, - [SMALL_STATE(193)] = 4193, - [SMALL_STATE(194)] = 4302, - [SMALL_STATE(195)] = 4413, - [SMALL_STATE(196)] = 4522, - [SMALL_STATE(197)] = 4631, - [SMALL_STATE(198)] = 4740, - [SMALL_STATE(199)] = 4849, - [SMALL_STATE(200)] = 4962, - [SMALL_STATE(201)] = 5071, - [SMALL_STATE(202)] = 5180, - [SMALL_STATE(203)] = 5289, - [SMALL_STATE(204)] = 5398, - [SMALL_STATE(205)] = 5503, - [SMALL_STATE(206)] = 5608, - [SMALL_STATE(207)] = 5719, - [SMALL_STATE(208)] = 5828, - [SMALL_STATE(209)] = 5939, - [SMALL_STATE(210)] = 6048, - [SMALL_STATE(211)] = 6161, - [SMALL_STATE(212)] = 6274, - [SMALL_STATE(213)] = 6383, - [SMALL_STATE(214)] = 6492, - [SMALL_STATE(215)] = 6601, - [SMALL_STATE(216)] = 6710, - [SMALL_STATE(217)] = 6819, - [SMALL_STATE(218)] = 6928, - [SMALL_STATE(219)] = 7039, - [SMALL_STATE(220)] = 7148, - [SMALL_STATE(221)] = 7257, - [SMALL_STATE(222)] = 7366, - [SMALL_STATE(223)] = 7475, - [SMALL_STATE(224)] = 7584, - [SMALL_STATE(225)] = 7693, - [SMALL_STATE(226)] = 7802, - [SMALL_STATE(227)] = 7913, - [SMALL_STATE(228)] = 8022, - [SMALL_STATE(229)] = 8131, - [SMALL_STATE(230)] = 8242, - [SMALL_STATE(231)] = 8351, - [SMALL_STATE(232)] = 8460, - [SMALL_STATE(233)] = 8566, - [SMALL_STATE(234)] = 8672, - [SMALL_STATE(235)] = 8778, - [SMALL_STATE(236)] = 8884, - [SMALL_STATE(237)] = 8990, - [SMALL_STATE(238)] = 9096, - [SMALL_STATE(239)] = 9202, - [SMALL_STATE(240)] = 9296, - [SMALL_STATE(241)] = 9402, - [SMALL_STATE(242)] = 9508, - [SMALL_STATE(243)] = 9611, - [SMALL_STATE(244)] = 9716, - [SMALL_STATE(245)] = 9821, - [SMALL_STATE(246)] = 9924, - [SMALL_STATE(247)] = 10029, - [SMALL_STATE(248)] = 10134, - [SMALL_STATE(249)] = 10239, - [SMALL_STATE(250)] = 10341, - [SMALL_STATE(251)] = 10443, - [SMALL_STATE(252)] = 10545, - [SMALL_STATE(253)] = 10647, - [SMALL_STATE(254)] = 10749, - [SMALL_STATE(255)] = 10851, - [SMALL_STATE(256)] = 10953, - [SMALL_STATE(257)] = 11055, - [SMALL_STATE(258)] = 11157, - [SMALL_STATE(259)] = 11259, - [SMALL_STATE(260)] = 11361, - [SMALL_STATE(261)] = 11463, - [SMALL_STATE(262)] = 11565, - [SMALL_STATE(263)] = 11667, - [SMALL_STATE(264)] = 11769, - [SMALL_STATE(265)] = 11870, - [SMALL_STATE(266)] = 11971, - [SMALL_STATE(267)] = 12044, - [SMALL_STATE(268)] = 12117, - [SMALL_STATE(269)] = 12190, - [SMALL_STATE(270)] = 12289, - [SMALL_STATE(271)] = 12390, - [SMALL_STATE(272)] = 12491, - [SMALL_STATE(273)] = 12592, - [SMALL_STATE(274)] = 12693, - [SMALL_STATE(275)] = 12792, - [SMALL_STATE(276)] = 12865, - [SMALL_STATE(277)] = 12966, - [SMALL_STATE(278)] = 13067, - [SMALL_STATE(279)] = 13168, - [SMALL_STATE(280)] = 13241, - [SMALL_STATE(281)] = 13314, - [SMALL_STATE(282)] = 13415, - [SMALL_STATE(283)] = 13514, - [SMALL_STATE(284)] = 13587, - [SMALL_STATE(285)] = 13688, - [SMALL_STATE(286)] = 13789, - [SMALL_STATE(287)] = 13890, - [SMALL_STATE(288)] = 13963, - [SMALL_STATE(289)] = 14061, - [SMALL_STATE(290)] = 14157, - [SMALL_STATE(291)] = 14253, - [SMALL_STATE(292)] = 14349, - [SMALL_STATE(293)] = 14445, - [SMALL_STATE(294)] = 14541, - [SMALL_STATE(295)] = 14601, - [SMALL_STATE(296)] = 14699, - [SMALL_STATE(297)] = 14795, - [SMALL_STATE(298)] = 14891, - [SMALL_STATE(299)] = 14989, - [SMALL_STATE(300)] = 15087, - [SMALL_STATE(301)] = 15183, - [SMALL_STATE(302)] = 15279, - [SMALL_STATE(303)] = 15375, - [SMALL_STATE(304)] = 15471, - [SMALL_STATE(305)] = 15569, - [SMALL_STATE(306)] = 15667, - [SMALL_STATE(307)] = 15763, - [SMALL_STATE(308)] = 15823, - [SMALL_STATE(309)] = 15921, - [SMALL_STATE(310)] = 16017, - [SMALL_STATE(311)] = 16115, - [SMALL_STATE(312)] = 16213, - [SMALL_STATE(313)] = 16282, - [SMALL_STATE(314)] = 16341, - [SMALL_STATE(315)] = 16400, - [SMALL_STATE(316)] = 16495, - [SMALL_STATE(317)] = 16564, - [SMALL_STATE(318)] = 16623, - [SMALL_STATE(319)] = 16682, - [SMALL_STATE(320)] = 16751, - [SMALL_STATE(321)] = 16810, - [SMALL_STATE(322)] = 16879, - [SMALL_STATE(323)] = 16948, - [SMALL_STATE(324)] = 17043, - [SMALL_STATE(325)] = 17116, - [SMALL_STATE(326)] = 17175, - [SMALL_STATE(327)] = 17244, - [SMALL_STATE(328)] = 17313, - [SMALL_STATE(329)] = 17376, - [SMALL_STATE(330)] = 17439, - [SMALL_STATE(331)] = 17502, - [SMALL_STATE(332)] = 17565, - [SMALL_STATE(333)] = 17624, - [SMALL_STATE(334)] = 17693, - [SMALL_STATE(335)] = 17752, - [SMALL_STATE(336)] = 17811, - [SMALL_STATE(337)] = 17870, - [SMALL_STATE(338)] = 17965, - [SMALL_STATE(339)] = 18038, - [SMALL_STATE(340)] = 18130, - [SMALL_STATE(341)] = 18222, - [SMALL_STATE(342)] = 18314, - [SMALL_STATE(343)] = 18406, - [SMALL_STATE(344)] = 18498, - [SMALL_STATE(345)] = 18590, - [SMALL_STATE(346)] = 18682, - [SMALL_STATE(347)] = 18774, - [SMALL_STATE(348)] = 18866, - [SMALL_STATE(349)] = 18958, - [SMALL_STATE(350)] = 19050, - [SMALL_STATE(351)] = 19142, - [SMALL_STATE(352)] = 19234, - [SMALL_STATE(353)] = 19326, - [SMALL_STATE(354)] = 19418, - [SMALL_STATE(355)] = 19482, - [SMALL_STATE(356)] = 19574, - [SMALL_STATE(357)] = 19666, - [SMALL_STATE(358)] = 19758, - [SMALL_STATE(359)] = 19850, - [SMALL_STATE(360)] = 19942, - [SMALL_STATE(361)] = 20034, - [SMALL_STATE(362)] = 20126, - [SMALL_STATE(363)] = 20218, - [SMALL_STATE(364)] = 20310, - [SMALL_STATE(365)] = 20402, - [SMALL_STATE(366)] = 20494, - [SMALL_STATE(367)] = 20586, - [SMALL_STATE(368)] = 20656, - [SMALL_STATE(369)] = 20748, - [SMALL_STATE(370)] = 20840, - [SMALL_STATE(371)] = 20932, - [SMALL_STATE(372)] = 21024, - [SMALL_STATE(373)] = 21116, - [SMALL_STATE(374)] = 21208, - [SMALL_STATE(375)] = 21300, - [SMALL_STATE(376)] = 21392, - [SMALL_STATE(377)] = 21484, - [SMALL_STATE(378)] = 21576, - [SMALL_STATE(379)] = 21668, - [SMALL_STATE(380)] = 21760, - [SMALL_STATE(381)] = 21852, - [SMALL_STATE(382)] = 21944, - [SMALL_STATE(383)] = 22036, - [SMALL_STATE(384)] = 22128, - [SMALL_STATE(385)] = 22222, - [SMALL_STATE(386)] = 22314, - [SMALL_STATE(387)] = 22406, - [SMALL_STATE(388)] = 22498, - [SMALL_STATE(389)] = 22590, - [SMALL_STATE(390)] = 22682, - [SMALL_STATE(391)] = 22774, - [SMALL_STATE(392)] = 22866, - [SMALL_STATE(393)] = 22958, - [SMALL_STATE(394)] = 23050, - [SMALL_STATE(395)] = 23142, - [SMALL_STATE(396)] = 23234, - [SMALL_STATE(397)] = 23326, - [SMALL_STATE(398)] = 23418, - [SMALL_STATE(399)] = 23510, - [SMALL_STATE(400)] = 23574, - [SMALL_STATE(401)] = 23666, - [SMALL_STATE(402)] = 23758, - [SMALL_STATE(403)] = 23850, - [SMALL_STATE(404)] = 23942, - [SMALL_STATE(405)] = 24034, - [SMALL_STATE(406)] = 24126, - [SMALL_STATE(407)] = 24218, - [SMALL_STATE(408)] = 24310, - [SMALL_STATE(409)] = 24402, - [SMALL_STATE(410)] = 24494, - [SMALL_STATE(411)] = 24586, - [SMALL_STATE(412)] = 24678, - [SMALL_STATE(413)] = 24770, - [SMALL_STATE(414)] = 24862, - [SMALL_STATE(415)] = 24954, - [SMALL_STATE(416)] = 25046, - [SMALL_STATE(417)] = 25138, - [SMALL_STATE(418)] = 25230, - [SMALL_STATE(419)] = 25322, - [SMALL_STATE(420)] = 25414, - [SMALL_STATE(421)] = 25506, - [SMALL_STATE(422)] = 25598, - [SMALL_STATE(423)] = 25690, - [SMALL_STATE(424)] = 25782, - [SMALL_STATE(425)] = 25874, - [SMALL_STATE(426)] = 25966, - [SMALL_STATE(427)] = 26058, - [SMALL_STATE(428)] = 26150, - [SMALL_STATE(429)] = 26242, - [SMALL_STATE(430)] = 26334, - [SMALL_STATE(431)] = 26426, - [SMALL_STATE(432)] = 26518, - [SMALL_STATE(433)] = 26610, - [SMALL_STATE(434)] = 26702, - [SMALL_STATE(435)] = 26794, - [SMALL_STATE(436)] = 26886, - [SMALL_STATE(437)] = 26943, - [SMALL_STATE(438)] = 27000, - [SMALL_STATE(439)] = 27057, - [SMALL_STATE(440)] = 27114, - [SMALL_STATE(441)] = 27171, - [SMALL_STATE(442)] = 27228, - [SMALL_STATE(443)] = 27285, - [SMALL_STATE(444)] = 27342, - [SMALL_STATE(445)] = 27399, - [SMALL_STATE(446)] = 27456, - [SMALL_STATE(447)] = 27513, - [SMALL_STATE(448)] = 27570, - [SMALL_STATE(449)] = 27627, - [SMALL_STATE(450)] = 27684, - [SMALL_STATE(451)] = 27745, - [SMALL_STATE(452)] = 27802, - [SMALL_STATE(453)] = 27863, - [SMALL_STATE(454)] = 27924, - [SMALL_STATE(455)] = 27981, - [SMALL_STATE(456)] = 28038, - [SMALL_STATE(457)] = 28095, - [SMALL_STATE(458)] = 28152, - [SMALL_STATE(459)] = 28219, - [SMALL_STATE(460)] = 28276, - [SMALL_STATE(461)] = 28337, - [SMALL_STATE(462)] = 28429, - [SMALL_STATE(463)] = 28493, - [SMALL_STATE(464)] = 28549, - [SMALL_STATE(465)] = 28605, - [SMALL_STATE(466)] = 28669, - [SMALL_STATE(467)] = 28729, - [SMALL_STATE(468)] = 28821, - [SMALL_STATE(469)] = 28881, - [SMALL_STATE(470)] = 28941, - [SMALL_STATE(471)] = 29001, - [SMALL_STATE(472)] = 29057, - [SMALL_STATE(473)] = 29117, - [SMALL_STATE(474)] = 29173, - [SMALL_STATE(475)] = 29237, - [SMALL_STATE(476)] = 29293, - [SMALL_STATE(477)] = 29353, - [SMALL_STATE(478)] = 29413, - [SMALL_STATE(479)] = 29507, - [SMALL_STATE(480)] = 29567, - [SMALL_STATE(481)] = 29627, - [SMALL_STATE(482)] = 29687, - [SMALL_STATE(483)] = 29747, - [SMALL_STATE(484)] = 29803, - [SMALL_STATE(485)] = 29863, - [SMALL_STATE(486)] = 29923, - [SMALL_STATE(487)] = 29979, - [SMALL_STATE(488)] = 30043, - [SMALL_STATE(489)] = 30099, - [SMALL_STATE(490)] = 30159, - [SMALL_STATE(491)] = 30219, - [SMALL_STATE(492)] = 30279, - [SMALL_STATE(493)] = 30334, - [SMALL_STATE(494)] = 30425, - [SMALL_STATE(495)] = 30486, - [SMALL_STATE(496)] = 30541, - [SMALL_STATE(497)] = 30596, - [SMALL_STATE(498)] = 30687, - [SMALL_STATE(499)] = 30742, - [SMALL_STATE(500)] = 30797, - [SMALL_STATE(501)] = 30852, - [SMALL_STATE(502)] = 30907, - [SMALL_STATE(503)] = 30968, - [SMALL_STATE(504)] = 31023, - [SMALL_STATE(505)] = 31078, - [SMALL_STATE(506)] = 31133, - [SMALL_STATE(507)] = 31188, - [SMALL_STATE(508)] = 31243, - [SMALL_STATE(509)] = 31334, - [SMALL_STATE(510)] = 31395, - [SMALL_STATE(511)] = 31486, - [SMALL_STATE(512)] = 31577, - [SMALL_STATE(513)] = 31668, - [SMALL_STATE(514)] = 31729, - [SMALL_STATE(515)] = 31783, - [SMALL_STATE(516)] = 31837, - [SMALL_STATE(517)] = 31891, - [SMALL_STATE(518)] = 31945, - [SMALL_STATE(519)] = 31999, - [SMALL_STATE(520)] = 32053, - [SMALL_STATE(521)] = 32107, - [SMALL_STATE(522)] = 32161, - [SMALL_STATE(523)] = 32215, - [SMALL_STATE(524)] = 32269, - [SMALL_STATE(525)] = 32323, - [SMALL_STATE(526)] = 32377, - [SMALL_STATE(527)] = 32431, - [SMALL_STATE(528)] = 32485, - [SMALL_STATE(529)] = 32539, - [SMALL_STATE(530)] = 32593, - [SMALL_STATE(531)] = 32647, - [SMALL_STATE(532)] = 32701, - [SMALL_STATE(533)] = 32755, - [SMALL_STATE(534)] = 32809, - [SMALL_STATE(535)] = 32863, - [SMALL_STATE(536)] = 32917, - [SMALL_STATE(537)] = 32971, - [SMALL_STATE(538)] = 33025, - [SMALL_STATE(539)] = 33079, - [SMALL_STATE(540)] = 33133, - [SMALL_STATE(541)] = 33187, - [SMALL_STATE(542)] = 33241, - [SMALL_STATE(543)] = 33295, - [SMALL_STATE(544)] = 33349, - [SMALL_STATE(545)] = 33403, - [SMALL_STATE(546)] = 33457, - [SMALL_STATE(547)] = 33511, - [SMALL_STATE(548)] = 33565, - [SMALL_STATE(549)] = 33619, - [SMALL_STATE(550)] = 33673, - [SMALL_STATE(551)] = 33727, - [SMALL_STATE(552)] = 33815, - [SMALL_STATE(553)] = 33869, - [SMALL_STATE(554)] = 33923, - [SMALL_STATE(555)] = 33977, - [SMALL_STATE(556)] = 34031, - [SMALL_STATE(557)] = 34085, - [SMALL_STATE(558)] = 34139, - [SMALL_STATE(559)] = 34193, - [SMALL_STATE(560)] = 34247, - [SMALL_STATE(561)] = 34301, - [SMALL_STATE(562)] = 34355, - [SMALL_STATE(563)] = 34409, - [SMALL_STATE(564)] = 34463, - [SMALL_STATE(565)] = 34517, - [SMALL_STATE(566)] = 34571, - [SMALL_STATE(567)] = 34625, - [SMALL_STATE(568)] = 34679, - [SMALL_STATE(569)] = 34733, - [SMALL_STATE(570)] = 34787, - [SMALL_STATE(571)] = 34841, - [SMALL_STATE(572)] = 34895, - [SMALL_STATE(573)] = 34949, - [SMALL_STATE(574)] = 35003, - [SMALL_STATE(575)] = 35057, - [SMALL_STATE(576)] = 35111, - [SMALL_STATE(577)] = 35165, - [SMALL_STATE(578)] = 35219, - [SMALL_STATE(579)] = 35273, - [SMALL_STATE(580)] = 35327, - [SMALL_STATE(581)] = 35381, - [SMALL_STATE(582)] = 35435, - [SMALL_STATE(583)] = 35489, - [SMALL_STATE(584)] = 35543, - [SMALL_STATE(585)] = 35597, - [SMALL_STATE(586)] = 35651, - [SMALL_STATE(587)] = 35705, - [SMALL_STATE(588)] = 35759, - [SMALL_STATE(589)] = 35813, - [SMALL_STATE(590)] = 35867, - [SMALL_STATE(591)] = 35921, - [SMALL_STATE(592)] = 35975, - [SMALL_STATE(593)] = 36029, - [SMALL_STATE(594)] = 36083, - [SMALL_STATE(595)] = 36137, - [SMALL_STATE(596)] = 36191, - [SMALL_STATE(597)] = 36245, - [SMALL_STATE(598)] = 36299, - [SMALL_STATE(599)] = 36353, - [SMALL_STATE(600)] = 36407, - [SMALL_STATE(601)] = 36461, - [SMALL_STATE(602)] = 36515, - [SMALL_STATE(603)] = 36569, - [SMALL_STATE(604)] = 36623, - [SMALL_STATE(605)] = 36677, - [SMALL_STATE(606)] = 36731, - [SMALL_STATE(607)] = 36785, - [SMALL_STATE(608)] = 36839, - [SMALL_STATE(609)] = 36893, - [SMALL_STATE(610)] = 36947, - [SMALL_STATE(611)] = 37001, - [SMALL_STATE(612)] = 37055, - [SMALL_STATE(613)] = 37143, - [SMALL_STATE(614)] = 37197, - [SMALL_STATE(615)] = 37279, - [SMALL_STATE(616)] = 37355, - [SMALL_STATE(617)] = 37409, - [SMALL_STATE(618)] = 37463, - [SMALL_STATE(619)] = 37539, - [SMALL_STATE(620)] = 37593, - [SMALL_STATE(621)] = 37647, - [SMALL_STATE(622)] = 37701, - [SMALL_STATE(623)] = 37777, - [SMALL_STATE(624)] = 37853, - [SMALL_STATE(625)] = 37907, - [SMALL_STATE(626)] = 37983, - [SMALL_STATE(627)] = 38059, - [SMALL_STATE(628)] = 38132, - [SMALL_STATE(629)] = 38205, - [SMALL_STATE(630)] = 38278, - [SMALL_STATE(631)] = 38351, - [SMALL_STATE(632)] = 38424, - [SMALL_STATE(633)] = 38497, - [SMALL_STATE(634)] = 38570, - [SMALL_STATE(635)] = 38643, - [SMALL_STATE(636)] = 38716, - [SMALL_STATE(637)] = 38789, - [SMALL_STATE(638)] = 38862, - [SMALL_STATE(639)] = 38935, - [SMALL_STATE(640)] = 39008, - [SMALL_STATE(641)] = 39081, - [SMALL_STATE(642)] = 39154, - [SMALL_STATE(643)] = 39227, - [SMALL_STATE(644)] = 39300, - [SMALL_STATE(645)] = 39373, - [SMALL_STATE(646)] = 39446, - [SMALL_STATE(647)] = 39519, - [SMALL_STATE(648)] = 39592, - [SMALL_STATE(649)] = 39665, - [SMALL_STATE(650)] = 39738, - [SMALL_STATE(651)] = 39811, - [SMALL_STATE(652)] = 39884, - [SMALL_STATE(653)] = 39957, - [SMALL_STATE(654)] = 40030, - [SMALL_STATE(655)] = 40103, - [SMALL_STATE(656)] = 40176, - [SMALL_STATE(657)] = 40249, - [SMALL_STATE(658)] = 40322, - [SMALL_STATE(659)] = 40395, - [SMALL_STATE(660)] = 40468, - [SMALL_STATE(661)] = 40541, - [SMALL_STATE(662)] = 40614, - [SMALL_STATE(663)] = 40691, - [SMALL_STATE(664)] = 40764, - [SMALL_STATE(665)] = 40837, - [SMALL_STATE(666)] = 40910, - [SMALL_STATE(667)] = 40983, - [SMALL_STATE(668)] = 41056, - [SMALL_STATE(669)] = 41129, - [SMALL_STATE(670)] = 41202, - [SMALL_STATE(671)] = 41275, - [SMALL_STATE(672)] = 41348, - [SMALL_STATE(673)] = 41421, - [SMALL_STATE(674)] = 41494, - [SMALL_STATE(675)] = 41567, - [SMALL_STATE(676)] = 41640, - [SMALL_STATE(677)] = 41713, - [SMALL_STATE(678)] = 41786, - [SMALL_STATE(679)] = 41863, - [SMALL_STATE(680)] = 41936, - [SMALL_STATE(681)] = 42009, - [SMALL_STATE(682)] = 42082, - [SMALL_STATE(683)] = 42155, - [SMALL_STATE(684)] = 42228, - [SMALL_STATE(685)] = 42301, - [SMALL_STATE(686)] = 42374, - [SMALL_STATE(687)] = 42447, - [SMALL_STATE(688)] = 42520, - [SMALL_STATE(689)] = 42593, - [SMALL_STATE(690)] = 42666, - [SMALL_STATE(691)] = 42739, - [SMALL_STATE(692)] = 42812, - [SMALL_STATE(693)] = 42885, - [SMALL_STATE(694)] = 42958, - [SMALL_STATE(695)] = 43031, - [SMALL_STATE(696)] = 43079, - [SMALL_STATE(697)] = 43127, - [SMALL_STATE(698)] = 43175, - [SMALL_STATE(699)] = 43223, - [SMALL_STATE(700)] = 43270, - [SMALL_STATE(701)] = 43317, - [SMALL_STATE(702)] = 43364, - [SMALL_STATE(703)] = 43411, - [SMALL_STATE(704)] = 43458, - [SMALL_STATE(705)] = 43505, - [SMALL_STATE(706)] = 43552, - [SMALL_STATE(707)] = 43599, - [SMALL_STATE(708)] = 43646, - [SMALL_STATE(709)] = 43693, - [SMALL_STATE(710)] = 43740, - [SMALL_STATE(711)] = 43787, - [SMALL_STATE(712)] = 43834, - [SMALL_STATE(713)] = 43881, - [SMALL_STATE(714)] = 43928, - [SMALL_STATE(715)] = 43975, - [SMALL_STATE(716)] = 44022, - [SMALL_STATE(717)] = 44069, - [SMALL_STATE(718)] = 44116, - [SMALL_STATE(719)] = 44163, - [SMALL_STATE(720)] = 44244, - [SMALL_STATE(721)] = 44291, - [SMALL_STATE(722)] = 44338, - [SMALL_STATE(723)] = 44385, - [SMALL_STATE(724)] = 44432, - [SMALL_STATE(725)] = 44479, - [SMALL_STATE(726)] = 44560, - [SMALL_STATE(727)] = 44607, - [SMALL_STATE(728)] = 44654, - [SMALL_STATE(729)] = 44701, - [SMALL_STATE(730)] = 44748, - [SMALL_STATE(731)] = 44795, - [SMALL_STATE(732)] = 44842, - [SMALL_STATE(733)] = 44889, - [SMALL_STATE(734)] = 44936, - [SMALL_STATE(735)] = 44996, - [SMALL_STATE(736)] = 45052, - [SMALL_STATE(737)] = 45108, - [SMALL_STATE(738)] = 45170, - [SMALL_STATE(739)] = 45240, - [SMALL_STATE(740)] = 45308, - [SMALL_STATE(741)] = 45368, - [SMALL_STATE(742)] = 45424, - [SMALL_STATE(743)] = 45490, - [SMALL_STATE(744)] = 45554, - [SMALL_STATE(745)] = 45604, - [SMALL_STATE(746)] = 45654, - [SMALL_STATE(747)] = 45704, - [SMALL_STATE(748)] = 45754, - [SMALL_STATE(749)] = 45824, - [SMALL_STATE(750)] = 45894, - [SMALL_STATE(751)] = 45950, - [SMALL_STATE(752)] = 46012, - [SMALL_STATE(753)] = 46082, - [SMALL_STATE(754)] = 46150, - [SMALL_STATE(755)] = 46206, - [SMALL_STATE(756)] = 46272, - [SMALL_STATE(757)] = 46336, - [SMALL_STATE(758)] = 46406, - [SMALL_STATE(759)] = 46476, - [SMALL_STATE(760)] = 46532, - [SMALL_STATE(761)] = 46588, - [SMALL_STATE(762)] = 46644, - [SMALL_STATE(763)] = 46693, - [SMALL_STATE(764)] = 46742, - [SMALL_STATE(765)] = 46787, - [SMALL_STATE(766)] = 46836, - [SMALL_STATE(767)] = 46915, - [SMALL_STATE(768)] = 46964, - [SMALL_STATE(769)] = 47013, - [SMALL_STATE(770)] = 47062, - [SMALL_STATE(771)] = 47111, - [SMALL_STATE(772)] = 47160, - [SMALL_STATE(773)] = 47237, - [SMALL_STATE(774)] = 47284, - [SMALL_STATE(775)] = 47331, - [SMALL_STATE(776)] = 47380, - [SMALL_STATE(777)] = 47429, - [SMALL_STATE(778)] = 47474, - [SMALL_STATE(779)] = 47523, - [SMALL_STATE(780)] = 47602, - [SMALL_STATE(781)] = 47649, - [SMALL_STATE(782)] = 47696, - [SMALL_STATE(783)] = 47745, - [SMALL_STATE(784)] = 47803, - [SMALL_STATE(785)] = 47857, - [SMALL_STATE(786)] = 47911, - [SMALL_STATE(787)] = 47965, - [SMALL_STATE(788)] = 48025, - [SMALL_STATE(789)] = 48093, - [SMALL_STATE(790)] = 48159, - [SMALL_STATE(791)] = 48213, - [SMALL_STATE(792)] = 48267, - [SMALL_STATE(793)] = 48331, - [SMALL_STATE(794)] = 48393, - [SMALL_STATE(795)] = 48441, - [SMALL_STATE(796)] = 48489, - [SMALL_STATE(797)] = 48543, - [SMALL_STATE(798)] = 48611, - [SMALL_STATE(799)] = 48679, - [SMALL_STATE(800)] = 48739, - [SMALL_STATE(801)] = 48807, - [SMALL_STATE(802)] = 48873, - [SMALL_STATE(803)] = 48931, - [SMALL_STATE(804)] = 48985, - [SMALL_STATE(805)] = 49049, - [SMALL_STATE(806)] = 49111, - [SMALL_STATE(807)] = 49155, - [SMALL_STATE(808)] = 49199, - [SMALL_STATE(809)] = 49243, - [SMALL_STATE(810)] = 49287, - [SMALL_STATE(811)] = 49341, - [SMALL_STATE(812)] = 49395, - [SMALL_STATE(813)] = 49449, - [SMALL_STATE(814)] = 49509, - [SMALL_STATE(815)] = 49577, - [SMALL_STATE(816)] = 49643, - [SMALL_STATE(817)] = 49701, - [SMALL_STATE(818)] = 49755, - [SMALL_STATE(819)] = 49819, - [SMALL_STATE(820)] = 49881, - [SMALL_STATE(821)] = 49949, - [SMALL_STATE(822)] = 50017, - [SMALL_STATE(823)] = 50093, - [SMALL_STATE(824)] = 50161, - [SMALL_STATE(825)] = 50229, - [SMALL_STATE(826)] = 50283, - [SMALL_STATE(827)] = 50328, - [SMALL_STATE(828)] = 50371, - [SMALL_STATE(829)] = 50424, - [SMALL_STATE(830)] = 50483, - [SMALL_STATE(831)] = 50526, - [SMALL_STATE(832)] = 50593, - [SMALL_STATE(833)] = 50658, - [SMALL_STATE(834)] = 50715, - [SMALL_STATE(835)] = 50760, - [SMALL_STATE(836)] = 50813, - [SMALL_STATE(837)] = 50876, - [SMALL_STATE(838)] = 50937, - [SMALL_STATE(839)] = 50982, - [SMALL_STATE(840)] = 51029, - [SMALL_STATE(841)] = 51074, - [SMALL_STATE(842)] = 51117, - [SMALL_STATE(843)] = 51162, - [SMALL_STATE(844)] = 51229, - [SMALL_STATE(845)] = 51296, - [SMALL_STATE(846)] = 51349, - [SMALL_STATE(847)] = 51430, - [SMALL_STATE(848)] = 51473, - [SMALL_STATE(849)] = 51526, - [SMALL_STATE(850)] = 51571, - [SMALL_STATE(851)] = 51614, - [SMALL_STATE(852)] = 51657, - [SMALL_STATE(853)] = 51704, - [SMALL_STATE(854)] = 51749, - [SMALL_STATE(855)] = 51830, - [SMALL_STATE(856)] = 51875, - [SMALL_STATE(857)] = 51956, - [SMALL_STATE(858)] = 52001, - [SMALL_STATE(859)] = 52048, - [SMALL_STATE(860)] = 52091, - [SMALL_STATE(861)] = 52136, - [SMALL_STATE(862)] = 52179, - [SMALL_STATE(863)] = 52260, - [SMALL_STATE(864)] = 52305, - [SMALL_STATE(865)] = 52352, - [SMALL_STATE(866)] = 52397, - [SMALL_STATE(867)] = 52439, - [SMALL_STATE(868)] = 52481, - [SMALL_STATE(869)] = 52523, - [SMALL_STATE(870)] = 52565, - [SMALL_STATE(871)] = 52607, - [SMALL_STATE(872)] = 52649, - [SMALL_STATE(873)] = 52691, - [SMALL_STATE(874)] = 52733, - [SMALL_STATE(875)] = 52775, - [SMALL_STATE(876)] = 52817, - [SMALL_STATE(877)] = 52859, - [SMALL_STATE(878)] = 52901, - [SMALL_STATE(879)] = 52943, - [SMALL_STATE(880)] = 52985, - [SMALL_STATE(881)] = 53027, - [SMALL_STATE(882)] = 53069, - [SMALL_STATE(883)] = 53111, - [SMALL_STATE(884)] = 53153, - [SMALL_STATE(885)] = 53195, - [SMALL_STATE(886)] = 53237, - [SMALL_STATE(887)] = 53279, - [SMALL_STATE(888)] = 53321, - [SMALL_STATE(889)] = 53363, - [SMALL_STATE(890)] = 53405, - [SMALL_STATE(891)] = 53447, - [SMALL_STATE(892)] = 53489, - [SMALL_STATE(893)] = 53531, - [SMALL_STATE(894)] = 53573, - [SMALL_STATE(895)] = 53615, - [SMALL_STATE(896)] = 53657, - [SMALL_STATE(897)] = 53699, - [SMALL_STATE(898)] = 53741, - [SMALL_STATE(899)] = 53783, - [SMALL_STATE(900)] = 53825, - [SMALL_STATE(901)] = 53867, - [SMALL_STATE(902)] = 53909, - [SMALL_STATE(903)] = 53951, - [SMALL_STATE(904)] = 53993, - [SMALL_STATE(905)] = 54035, - [SMALL_STATE(906)] = 54077, - [SMALL_STATE(907)] = 54119, - [SMALL_STATE(908)] = 54161, - [SMALL_STATE(909)] = 54203, - [SMALL_STATE(910)] = 54245, - [SMALL_STATE(911)] = 54287, - [SMALL_STATE(912)] = 54331, - [SMALL_STATE(913)] = 54375, - [SMALL_STATE(914)] = 54417, - [SMALL_STATE(915)] = 54459, - [SMALL_STATE(916)] = 54503, - [SMALL_STATE(917)] = 54545, - [SMALL_STATE(918)] = 54587, - [SMALL_STATE(919)] = 54629, - [SMALL_STATE(920)] = 54673, - [SMALL_STATE(921)] = 54715, - [SMALL_STATE(922)] = 54757, - [SMALL_STATE(923)] = 54799, - [SMALL_STATE(924)] = 54841, - [SMALL_STATE(925)] = 54883, - [SMALL_STATE(926)] = 54927, - [SMALL_STATE(927)] = 54969, - [SMALL_STATE(928)] = 55047, - [SMALL_STATE(929)] = 55125, - [SMALL_STATE(930)] = 55167, - [SMALL_STATE(931)] = 55209, - [SMALL_STATE(932)] = 55251, - [SMALL_STATE(933)] = 55331, - [SMALL_STATE(934)] = 55409, - [SMALL_STATE(935)] = 55487, - [SMALL_STATE(936)] = 55565, - [SMALL_STATE(937)] = 55607, - [SMALL_STATE(938)] = 55649, - [SMALL_STATE(939)] = 55691, - [SMALL_STATE(940)] = 55733, - [SMALL_STATE(941)] = 55775, - [SMALL_STATE(942)] = 55817, - [SMALL_STATE(943)] = 55859, - [SMALL_STATE(944)] = 55901, - [SMALL_STATE(945)] = 55943, - [SMALL_STATE(946)] = 55984, - [SMALL_STATE(947)] = 56025, - [SMALL_STATE(948)] = 56066, - [SMALL_STATE(949)] = 56107, - [SMALL_STATE(950)] = 56148, - [SMALL_STATE(951)] = 56189, - [SMALL_STATE(952)] = 56230, - [SMALL_STATE(953)] = 56271, - [SMALL_STATE(954)] = 56312, - [SMALL_STATE(955)] = 56353, - [SMALL_STATE(956)] = 56394, - [SMALL_STATE(957)] = 56435, - [SMALL_STATE(958)] = 56476, - [SMALL_STATE(959)] = 56517, - [SMALL_STATE(960)] = 56558, - [SMALL_STATE(961)] = 56599, - [SMALL_STATE(962)] = 56640, - [SMALL_STATE(963)] = 56681, - [SMALL_STATE(964)] = 56722, - [SMALL_STATE(965)] = 56801, - [SMALL_STATE(966)] = 56842, - [SMALL_STATE(967)] = 56883, - [SMALL_STATE(968)] = 56924, - [SMALL_STATE(969)] = 56965, - [SMALL_STATE(970)] = 57006, - [SMALL_STATE(971)] = 57047, - [SMALL_STATE(972)] = 57088, - [SMALL_STATE(973)] = 57133, - [SMALL_STATE(974)] = 57178, - [SMALL_STATE(975)] = 57219, - [SMALL_STATE(976)] = 57260, - [SMALL_STATE(977)] = 57301, - [SMALL_STATE(978)] = 57342, - [SMALL_STATE(979)] = 57383, - [SMALL_STATE(980)] = 57458, - [SMALL_STATE(981)] = 57537, - [SMALL_STATE(982)] = 57578, - [SMALL_STATE(983)] = 57657, - [SMALL_STATE(984)] = 57698, - [SMALL_STATE(985)] = 57771, - [SMALL_STATE(986)] = 57841, - [SMALL_STATE(987)] = 57911, - [SMALL_STATE(988)] = 57973, - [SMALL_STATE(989)] = 58035, - [SMALL_STATE(990)] = 58074, - [SMALL_STATE(991)] = 58113, - [SMALL_STATE(992)] = 58152, - [SMALL_STATE(993)] = 58191, - [SMALL_STATE(994)] = 58221, - [SMALL_STATE(995)] = 58274, - [SMALL_STATE(996)] = 58311, - [SMALL_STATE(997)] = 58364, - [SMALL_STATE(998)] = 58399, - [SMALL_STATE(999)] = 58424, - [SMALL_STATE(1000)] = 58449, - [SMALL_STATE(1001)] = 58478, - [SMALL_STATE(1002)] = 58507, - [SMALL_STATE(1003)] = 58544, - [SMALL_STATE(1004)] = 58581, - [SMALL_STATE(1005)] = 58606, - [SMALL_STATE(1006)] = 58631, - [SMALL_STATE(1007)] = 58668, - [SMALL_STATE(1008)] = 58703, - [SMALL_STATE(1009)] = 58756, - [SMALL_STATE(1010)] = 58790, - [SMALL_STATE(1011)] = 58818, - [SMALL_STATE(1012)] = 58852, - [SMALL_STATE(1013)] = 58898, - [SMALL_STATE(1014)] = 58929, - [SMALL_STATE(1015)] = 58972, - [SMALL_STATE(1016)] = 59015, - [SMALL_STATE(1017)] = 59058, - [SMALL_STATE(1018)] = 59101, - [SMALL_STATE(1019)] = 59144, - [SMALL_STATE(1020)] = 59187, - [SMALL_STATE(1021)] = 59230, - [SMALL_STATE(1022)] = 59274, - [SMALL_STATE(1023)] = 59314, - [SMALL_STATE(1024)] = 59351, - [SMALL_STATE(1025)] = 59376, - [SMALL_STATE(1026)] = 59413, - [SMALL_STATE(1027)] = 59450, - [SMALL_STATE(1028)] = 59487, - [SMALL_STATE(1029)] = 59521, - [SMALL_STATE(1030)] = 59555, - [SMALL_STATE(1031)] = 59576, - [SMALL_STATE(1032)] = 59597, - [SMALL_STATE(1033)] = 59619, - [SMALL_STATE(1034)] = 59650, - [SMALL_STATE(1035)] = 59687, - [SMALL_STATE(1036)] = 59718, - [SMALL_STATE(1037)] = 59749, - [SMALL_STATE(1038)] = 59780, - [SMALL_STATE(1039)] = 59803, - [SMALL_STATE(1040)] = 59824, - [SMALL_STATE(1041)] = 59845, - [SMALL_STATE(1042)] = 59882, - [SMALL_STATE(1043)] = 59905, - [SMALL_STATE(1044)] = 59936, - [SMALL_STATE(1045)] = 59967, - [SMALL_STATE(1046)] = 59998, - [SMALL_STATE(1047)] = 60035, - [SMALL_STATE(1048)] = 60066, - [SMALL_STATE(1049)] = 60097, - [SMALL_STATE(1050)] = 60114, - [SMALL_STATE(1051)] = 60145, - [SMALL_STATE(1052)] = 60176, - [SMALL_STATE(1053)] = 60207, - [SMALL_STATE(1054)] = 60238, - [SMALL_STATE(1055)] = 60269, - [SMALL_STATE(1056)] = 60300, - [SMALL_STATE(1057)] = 60331, - [SMALL_STATE(1058)] = 60362, - [SMALL_STATE(1059)] = 60393, - [SMALL_STATE(1060)] = 60424, - [SMALL_STATE(1061)] = 60461, - [SMALL_STATE(1062)] = 60498, - [SMALL_STATE(1063)] = 60520, - [SMALL_STATE(1064)] = 60538, - [SMALL_STATE(1065)] = 60562, - [SMALL_STATE(1066)] = 60582, - [SMALL_STATE(1067)] = 60616, - [SMALL_STATE(1068)] = 60650, - [SMALL_STATE(1069)] = 60670, - [SMALL_STATE(1070)] = 60692, - [SMALL_STATE(1071)] = 60714, - [SMALL_STATE(1072)] = 60736, - [SMALL_STATE(1073)] = 60754, - [SMALL_STATE(1074)] = 60788, - [SMALL_STATE(1075)] = 60812, - [SMALL_STATE(1076)] = 60846, - [SMALL_STATE(1077)] = 60880, - [SMALL_STATE(1078)] = 60900, - [SMALL_STATE(1079)] = 60918, - [SMALL_STATE(1080)] = 60952, - [SMALL_STATE(1081)] = 60986, - [SMALL_STATE(1082)] = 61020, - [SMALL_STATE(1083)] = 61042, - [SMALL_STATE(1084)] = 61076, - [SMALL_STATE(1085)] = 61110, - [SMALL_STATE(1086)] = 61134, - [SMALL_STATE(1087)] = 61168, - [SMALL_STATE(1088)] = 61190, - [SMALL_STATE(1089)] = 61224, - [SMALL_STATE(1090)] = 61244, - [SMALL_STATE(1091)] = 61263, - [SMALL_STATE(1092)] = 61282, - [SMALL_STATE(1093)] = 61305, - [SMALL_STATE(1094)] = 61330, - [SMALL_STATE(1095)] = 61349, - [SMALL_STATE(1096)] = 61374, - [SMALL_STATE(1097)] = 61395, - [SMALL_STATE(1098)] = 61414, - [SMALL_STATE(1099)] = 61433, - [SMALL_STATE(1100)] = 61456, - [SMALL_STATE(1101)] = 61479, - [SMALL_STATE(1102)] = 61498, - [SMALL_STATE(1103)] = 61518, - [SMALL_STATE(1104)] = 61538, - [SMALL_STATE(1105)] = 61556, - [SMALL_STATE(1106)] = 61572, - [SMALL_STATE(1107)] = 61590, - [SMALL_STATE(1108)] = 61610, - [SMALL_STATE(1109)] = 61630, - [SMALL_STATE(1110)] = 61650, - [SMALL_STATE(1111)] = 61664, - [SMALL_STATE(1112)] = 61682, - [SMALL_STATE(1113)] = 61702, - [SMALL_STATE(1114)] = 61726, - [SMALL_STATE(1115)] = 61740, - [SMALL_STATE(1116)] = 61754, - [SMALL_STATE(1117)] = 61768, - [SMALL_STATE(1118)] = 61788, - [SMALL_STATE(1119)] = 61812, - [SMALL_STATE(1120)] = 61826, - [SMALL_STATE(1121)] = 61840, - [SMALL_STATE(1122)] = 61856, - [SMALL_STATE(1123)] = 61882, - [SMALL_STATE(1124)] = 61900, - [SMALL_STATE(1125)] = 61914, - [SMALL_STATE(1126)] = 61934, - [SMALL_STATE(1127)] = 61948, - [SMALL_STATE(1128)] = 61962, - [SMALL_STATE(1129)] = 61980, - [SMALL_STATE(1130)] = 61994, - [SMALL_STATE(1131)] = 62008, - [SMALL_STATE(1132)] = 62022, - [SMALL_STATE(1133)] = 62036, - [SMALL_STATE(1134)] = 62058, - [SMALL_STATE(1135)] = 62072, - [SMALL_STATE(1136)] = 62086, - [SMALL_STATE(1137)] = 62104, - [SMALL_STATE(1138)] = 62118, - [SMALL_STATE(1139)] = 62132, - [SMALL_STATE(1140)] = 62154, - [SMALL_STATE(1141)] = 62168, - [SMALL_STATE(1142)] = 62188, - [SMALL_STATE(1143)] = 62204, - [SMALL_STATE(1144)] = 62218, - [SMALL_STATE(1145)] = 62238, - [SMALL_STATE(1146)] = 62256, - [SMALL_STATE(1147)] = 62274, - [SMALL_STATE(1148)] = 62296, - [SMALL_STATE(1149)] = 62320, - [SMALL_STATE(1150)] = 62338, - [SMALL_STATE(1151)] = 62358, - [SMALL_STATE(1152)] = 62376, - [SMALL_STATE(1153)] = 62392, - [SMALL_STATE(1154)] = 62410, - [SMALL_STATE(1155)] = 62424, - [SMALL_STATE(1156)] = 62442, - [SMALL_STATE(1157)] = 62462, - [SMALL_STATE(1158)] = 62482, - [SMALL_STATE(1159)] = 62496, - [SMALL_STATE(1160)] = 62510, - [SMALL_STATE(1161)] = 62524, - [SMALL_STATE(1162)] = 62538, - [SMALL_STATE(1163)] = 62556, - [SMALL_STATE(1164)] = 62574, - [SMALL_STATE(1165)] = 62594, - [SMALL_STATE(1166)] = 62612, - [SMALL_STATE(1167)] = 62632, - [SMALL_STATE(1168)] = 62646, - [SMALL_STATE(1169)] = 62660, - [SMALL_STATE(1170)] = 62685, - [SMALL_STATE(1171)] = 62710, - [SMALL_STATE(1172)] = 62731, - [SMALL_STATE(1173)] = 62750, - [SMALL_STATE(1174)] = 62771, - [SMALL_STATE(1175)] = 62790, - [SMALL_STATE(1176)] = 62813, - [SMALL_STATE(1177)] = 62826, - [SMALL_STATE(1178)] = 62849, - [SMALL_STATE(1179)] = 62862, - [SMALL_STATE(1180)] = 62885, - [SMALL_STATE(1181)] = 62908, - [SMALL_STATE(1182)] = 62929, - [SMALL_STATE(1183)] = 62948, - [SMALL_STATE(1184)] = 62967, - [SMALL_STATE(1185)] = 62982, - [SMALL_STATE(1186)] = 63005, - [SMALL_STATE(1187)] = 63030, - [SMALL_STATE(1188)] = 63051, - [SMALL_STATE(1189)] = 63068, - [SMALL_STATE(1190)] = 63087, - [SMALL_STATE(1191)] = 63112, - [SMALL_STATE(1192)] = 63131, - [SMALL_STATE(1193)] = 63150, - [SMALL_STATE(1194)] = 63167, - [SMALL_STATE(1195)] = 63182, - [SMALL_STATE(1196)] = 63199, - [SMALL_STATE(1197)] = 63212, - [SMALL_STATE(1198)] = 63235, - [SMALL_STATE(1199)] = 63260, - [SMALL_STATE(1200)] = 63279, - [SMALL_STATE(1201)] = 63300, - [SMALL_STATE(1202)] = 63323, - [SMALL_STATE(1203)] = 63346, - [SMALL_STATE(1204)] = 63359, - [SMALL_STATE(1205)] = 63384, - [SMALL_STATE(1206)] = 63409, - [SMALL_STATE(1207)] = 63428, - [SMALL_STATE(1208)] = 63453, - [SMALL_STATE(1209)] = 63472, - [SMALL_STATE(1210)] = 63491, - [SMALL_STATE(1211)] = 63504, - [SMALL_STATE(1212)] = 63517, - [SMALL_STATE(1213)] = 63542, - [SMALL_STATE(1214)] = 63565, - [SMALL_STATE(1215)] = 63584, - [SMALL_STATE(1216)] = 63600, - [SMALL_STATE(1217)] = 63616, - [SMALL_STATE(1218)] = 63630, - [SMALL_STATE(1219)] = 63644, - [SMALL_STATE(1220)] = 63660, - [SMALL_STATE(1221)] = 63680, - [SMALL_STATE(1222)] = 63696, - [SMALL_STATE(1223)] = 63712, - [SMALL_STATE(1224)] = 63726, - [SMALL_STATE(1225)] = 63744, - [SMALL_STATE(1226)] = 63766, - [SMALL_STATE(1227)] = 63784, - [SMALL_STATE(1228)] = 63802, - [SMALL_STATE(1229)] = 63820, - [SMALL_STATE(1230)] = 63836, - [SMALL_STATE(1231)] = 63858, - [SMALL_STATE(1232)] = 63876, - [SMALL_STATE(1233)] = 63892, - [SMALL_STATE(1234)] = 63908, - [SMALL_STATE(1235)] = 63924, - [SMALL_STATE(1236)] = 63946, - [SMALL_STATE(1237)] = 63968, - [SMALL_STATE(1238)] = 63990, - [SMALL_STATE(1239)] = 64008, - [SMALL_STATE(1240)] = 64020, - [SMALL_STATE(1241)] = 64042, - [SMALL_STATE(1242)] = 64058, - [SMALL_STATE(1243)] = 64074, - [SMALL_STATE(1244)] = 64092, - [SMALL_STATE(1245)] = 64104, - [SMALL_STATE(1246)] = 64118, - [SMALL_STATE(1247)] = 64138, - [SMALL_STATE(1248)] = 64158, - [SMALL_STATE(1249)] = 64174, - [SMALL_STATE(1250)] = 64194, - [SMALL_STATE(1251)] = 64212, - [SMALL_STATE(1252)] = 64228, - [SMALL_STATE(1253)] = 64242, - [SMALL_STATE(1254)] = 64256, - [SMALL_STATE(1255)] = 64278, - [SMALL_STATE(1256)] = 64295, - [SMALL_STATE(1257)] = 64314, - [SMALL_STATE(1258)] = 64329, - [SMALL_STATE(1259)] = 64346, - [SMALL_STATE(1260)] = 64361, - [SMALL_STATE(1261)] = 64376, - [SMALL_STATE(1262)] = 64393, - [SMALL_STATE(1263)] = 64410, - [SMALL_STATE(1264)] = 64421, - [SMALL_STATE(1265)] = 64438, - [SMALL_STATE(1266)] = 64457, - [SMALL_STATE(1267)] = 64474, - [SMALL_STATE(1268)] = 64485, - [SMALL_STATE(1269)] = 64502, - [SMALL_STATE(1270)] = 64519, - [SMALL_STATE(1271)] = 64534, - [SMALL_STATE(1272)] = 64551, - [SMALL_STATE(1273)] = 64570, - [SMALL_STATE(1274)] = 64581, - [SMALL_STATE(1275)] = 64598, - [SMALL_STATE(1276)] = 64615, - [SMALL_STATE(1277)] = 64632, - [SMALL_STATE(1278)] = 64643, - [SMALL_STATE(1279)] = 64658, - [SMALL_STATE(1280)] = 64675, - [SMALL_STATE(1281)] = 64690, - [SMALL_STATE(1282)] = 64709, - [SMALL_STATE(1283)] = 64726, - [SMALL_STATE(1284)] = 64745, - [SMALL_STATE(1285)] = 64764, - [SMALL_STATE(1286)] = 64781, - [SMALL_STATE(1287)] = 64796, - [SMALL_STATE(1288)] = 64815, - [SMALL_STATE(1289)] = 64834, - [SMALL_STATE(1290)] = 64845, - [SMALL_STATE(1291)] = 64862, - [SMALL_STATE(1292)] = 64879, - [SMALL_STATE(1293)] = 64896, - [SMALL_STATE(1294)] = 64910, - [SMALL_STATE(1295)] = 64924, - [SMALL_STATE(1296)] = 64940, - [SMALL_STATE(1297)] = 64956, - [SMALL_STATE(1298)] = 64972, - [SMALL_STATE(1299)] = 64986, - [SMALL_STATE(1300)] = 65000, - [SMALL_STATE(1301)] = 65010, - [SMALL_STATE(1302)] = 65026, - [SMALL_STATE(1303)] = 65042, - [SMALL_STATE(1304)] = 65058, - [SMALL_STATE(1305)] = 65072, - [SMALL_STATE(1306)] = 65086, - [SMALL_STATE(1307)] = 65098, - [SMALL_STATE(1308)] = 65114, - [SMALL_STATE(1309)] = 65124, - [SMALL_STATE(1310)] = 65138, - [SMALL_STATE(1311)] = 65154, - [SMALL_STATE(1312)] = 65170, - [SMALL_STATE(1313)] = 65186, - [SMALL_STATE(1314)] = 65196, - [SMALL_STATE(1315)] = 65206, - [SMALL_STATE(1316)] = 65216, - [SMALL_STATE(1317)] = 65230, - [SMALL_STATE(1318)] = 65244, - [SMALL_STATE(1319)] = 65258, - [SMALL_STATE(1320)] = 65272, - [SMALL_STATE(1321)] = 65286, - [SMALL_STATE(1322)] = 65302, - [SMALL_STATE(1323)] = 65318, - [SMALL_STATE(1324)] = 65334, - [SMALL_STATE(1325)] = 65350, - [SMALL_STATE(1326)] = 65364, - [SMALL_STATE(1327)] = 65378, - [SMALL_STATE(1328)] = 65392, - [SMALL_STATE(1329)] = 65408, - [SMALL_STATE(1330)] = 65424, - [SMALL_STATE(1331)] = 65440, - [SMALL_STATE(1332)] = 65456, - [SMALL_STATE(1333)] = 65472, - [SMALL_STATE(1334)] = 65488, - [SMALL_STATE(1335)] = 65504, - [SMALL_STATE(1336)] = 65520, - [SMALL_STATE(1337)] = 65534, - [SMALL_STATE(1338)] = 65548, - [SMALL_STATE(1339)] = 65562, - [SMALL_STATE(1340)] = 65578, - [SMALL_STATE(1341)] = 65592, - [SMALL_STATE(1342)] = 65604, - [SMALL_STATE(1343)] = 65618, - [SMALL_STATE(1344)] = 65634, - [SMALL_STATE(1345)] = 65648, - [SMALL_STATE(1346)] = 65664, - [SMALL_STATE(1347)] = 65680, - [SMALL_STATE(1348)] = 65696, - [SMALL_STATE(1349)] = 65712, - [SMALL_STATE(1350)] = 65728, - [SMALL_STATE(1351)] = 65744, - [SMALL_STATE(1352)] = 65760, - [SMALL_STATE(1353)] = 65776, - [SMALL_STATE(1354)] = 65790, - [SMALL_STATE(1355)] = 65804, - [SMALL_STATE(1356)] = 65818, - [SMALL_STATE(1357)] = 65832, - [SMALL_STATE(1358)] = 65848, - [SMALL_STATE(1359)] = 65858, - [SMALL_STATE(1360)] = 65872, - [SMALL_STATE(1361)] = 65886, - [SMALL_STATE(1362)] = 65902, - [SMALL_STATE(1363)] = 65916, - [SMALL_STATE(1364)] = 65930, - [SMALL_STATE(1365)] = 65944, - [SMALL_STATE(1366)] = 65958, - [SMALL_STATE(1367)] = 65974, - [SMALL_STATE(1368)] = 65990, - [SMALL_STATE(1369)] = 66004, - [SMALL_STATE(1370)] = 66020, - [SMALL_STATE(1371)] = 66036, - [SMALL_STATE(1372)] = 66050, - [SMALL_STATE(1373)] = 66064, - [SMALL_STATE(1374)] = 66080, - [SMALL_STATE(1375)] = 66093, - [SMALL_STATE(1376)] = 66106, - [SMALL_STATE(1377)] = 66119, - [SMALL_STATE(1378)] = 66132, - [SMALL_STATE(1379)] = 66145, - [SMALL_STATE(1380)] = 66154, - [SMALL_STATE(1381)] = 66165, - [SMALL_STATE(1382)] = 66178, - [SMALL_STATE(1383)] = 66189, - [SMALL_STATE(1384)] = 66202, - [SMALL_STATE(1385)] = 66215, - [SMALL_STATE(1386)] = 66228, - [SMALL_STATE(1387)] = 66241, - [SMALL_STATE(1388)] = 66254, - [SMALL_STATE(1389)] = 66267, - [SMALL_STATE(1390)] = 66280, - [SMALL_STATE(1391)] = 66293, - [SMALL_STATE(1392)] = 66304, - [SMALL_STATE(1393)] = 66317, - [SMALL_STATE(1394)] = 66328, - [SMALL_STATE(1395)] = 66337, - [SMALL_STATE(1396)] = 66350, - [SMALL_STATE(1397)] = 66363, - [SMALL_STATE(1398)] = 66376, - [SMALL_STATE(1399)] = 66389, - [SMALL_STATE(1400)] = 66402, - [SMALL_STATE(1401)] = 66415, - [SMALL_STATE(1402)] = 66428, - [SMALL_STATE(1403)] = 66441, - [SMALL_STATE(1404)] = 66454, - [SMALL_STATE(1405)] = 66463, - [SMALL_STATE(1406)] = 66476, - [SMALL_STATE(1407)] = 66487, - [SMALL_STATE(1408)] = 66500, - [SMALL_STATE(1409)] = 66513, - [SMALL_STATE(1410)] = 66526, - [SMALL_STATE(1411)] = 66539, - [SMALL_STATE(1412)] = 66552, - [SMALL_STATE(1413)] = 66565, - [SMALL_STATE(1414)] = 66578, - [SMALL_STATE(1415)] = 66591, - [SMALL_STATE(1416)] = 66604, - [SMALL_STATE(1417)] = 66617, - [SMALL_STATE(1418)] = 66630, - [SMALL_STATE(1419)] = 66643, - [SMALL_STATE(1420)] = 66656, - [SMALL_STATE(1421)] = 66665, - [SMALL_STATE(1422)] = 66674, - [SMALL_STATE(1423)] = 66687, - [SMALL_STATE(1424)] = 66700, - [SMALL_STATE(1425)] = 66713, - [SMALL_STATE(1426)] = 66726, - [SMALL_STATE(1427)] = 66739, - [SMALL_STATE(1428)] = 66752, - [SMALL_STATE(1429)] = 66765, - [SMALL_STATE(1430)] = 66778, - [SMALL_STATE(1431)] = 66791, - [SMALL_STATE(1432)] = 66804, - [SMALL_STATE(1433)] = 66817, - [SMALL_STATE(1434)] = 66830, - [SMALL_STATE(1435)] = 66843, - [SMALL_STATE(1436)] = 66856, - [SMALL_STATE(1437)] = 66869, - [SMALL_STATE(1438)] = 66882, - [SMALL_STATE(1439)] = 66895, - [SMALL_STATE(1440)] = 66908, - [SMALL_STATE(1441)] = 66921, - [SMALL_STATE(1442)] = 66934, - [SMALL_STATE(1443)] = 66945, - [SMALL_STATE(1444)] = 66958, - [SMALL_STATE(1445)] = 66967, - [SMALL_STATE(1446)] = 66976, - [SMALL_STATE(1447)] = 66985, - [SMALL_STATE(1448)] = 66994, - [SMALL_STATE(1449)] = 67007, - [SMALL_STATE(1450)] = 67020, - [SMALL_STATE(1451)] = 67033, - [SMALL_STATE(1452)] = 67046, - [SMALL_STATE(1453)] = 67059, - [SMALL_STATE(1454)] = 67072, - [SMALL_STATE(1455)] = 67085, - [SMALL_STATE(1456)] = 67096, - [SMALL_STATE(1457)] = 67109, - [SMALL_STATE(1458)] = 67122, - [SMALL_STATE(1459)] = 67135, - [SMALL_STATE(1460)] = 67148, - [SMALL_STATE(1461)] = 67161, - [SMALL_STATE(1462)] = 67174, - [SMALL_STATE(1463)] = 67187, - [SMALL_STATE(1464)] = 67196, - [SMALL_STATE(1465)] = 67205, - [SMALL_STATE(1466)] = 67214, - [SMALL_STATE(1467)] = 67227, - [SMALL_STATE(1468)] = 67240, - [SMALL_STATE(1469)] = 67253, - [SMALL_STATE(1470)] = 67266, - [SMALL_STATE(1471)] = 67275, - [SMALL_STATE(1472)] = 67288, - [SMALL_STATE(1473)] = 67301, - [SMALL_STATE(1474)] = 67314, - [SMALL_STATE(1475)] = 67327, - [SMALL_STATE(1476)] = 67338, - [SMALL_STATE(1477)] = 67351, - [SMALL_STATE(1478)] = 67364, - [SMALL_STATE(1479)] = 67377, - [SMALL_STATE(1480)] = 67388, - [SMALL_STATE(1481)] = 67401, - [SMALL_STATE(1482)] = 67414, - [SMALL_STATE(1483)] = 67425, - [SMALL_STATE(1484)] = 67438, - [SMALL_STATE(1485)] = 67451, - [SMALL_STATE(1486)] = 67464, - [SMALL_STATE(1487)] = 67473, - [SMALL_STATE(1488)] = 67486, - [SMALL_STATE(1489)] = 67499, - [SMALL_STATE(1490)] = 67512, - [SMALL_STATE(1491)] = 67525, - [SMALL_STATE(1492)] = 67538, - [SMALL_STATE(1493)] = 67551, - [SMALL_STATE(1494)] = 67564, - [SMALL_STATE(1495)] = 67577, - [SMALL_STATE(1496)] = 67590, - [SMALL_STATE(1497)] = 67603, - [SMALL_STATE(1498)] = 67614, - [SMALL_STATE(1499)] = 67627, - [SMALL_STATE(1500)] = 67640, - [SMALL_STATE(1501)] = 67653, - [SMALL_STATE(1502)] = 67662, - [SMALL_STATE(1503)] = 67673, - [SMALL_STATE(1504)] = 67686, - [SMALL_STATE(1505)] = 67699, - [SMALL_STATE(1506)] = 67712, - [SMALL_STATE(1507)] = 67725, - [SMALL_STATE(1508)] = 67733, - [SMALL_STATE(1509)] = 67741, - [SMALL_STATE(1510)] = 67751, - [SMALL_STATE(1511)] = 67761, - [SMALL_STATE(1512)] = 67771, - [SMALL_STATE(1513)] = 67781, - [SMALL_STATE(1514)] = 67791, - [SMALL_STATE(1515)] = 67799, - [SMALL_STATE(1516)] = 67807, - [SMALL_STATE(1517)] = 67815, - [SMALL_STATE(1518)] = 67823, - [SMALL_STATE(1519)] = 67831, - [SMALL_STATE(1520)] = 67839, - [SMALL_STATE(1521)] = 67847, - [SMALL_STATE(1522)] = 67855, - [SMALL_STATE(1523)] = 67863, - [SMALL_STATE(1524)] = 67871, - [SMALL_STATE(1525)] = 67879, - [SMALL_STATE(1526)] = 67887, - [SMALL_STATE(1527)] = 67895, - [SMALL_STATE(1528)] = 67903, - [SMALL_STATE(1529)] = 67911, - [SMALL_STATE(1530)] = 67919, - [SMALL_STATE(1531)] = 67927, - [SMALL_STATE(1532)] = 67935, - [SMALL_STATE(1533)] = 67943, - [SMALL_STATE(1534)] = 67951, - [SMALL_STATE(1535)] = 67959, - [SMALL_STATE(1536)] = 67967, - [SMALL_STATE(1537)] = 67975, - [SMALL_STATE(1538)] = 67983, - [SMALL_STATE(1539)] = 67991, - [SMALL_STATE(1540)] = 68001, - [SMALL_STATE(1541)] = 68009, - [SMALL_STATE(1542)] = 68019, - [SMALL_STATE(1543)] = 68027, - [SMALL_STATE(1544)] = 68037, - [SMALL_STATE(1545)] = 68047, - [SMALL_STATE(1546)] = 68055, - [SMALL_STATE(1547)] = 68065, - [SMALL_STATE(1548)] = 68073, - [SMALL_STATE(1549)] = 68083, - [SMALL_STATE(1550)] = 68093, - [SMALL_STATE(1551)] = 68103, - [SMALL_STATE(1552)] = 68111, - [SMALL_STATE(1553)] = 68121, - [SMALL_STATE(1554)] = 68131, - [SMALL_STATE(1555)] = 68141, - [SMALL_STATE(1556)] = 68149, - [SMALL_STATE(1557)] = 68159, - [SMALL_STATE(1558)] = 68169, - [SMALL_STATE(1559)] = 68177, - [SMALL_STATE(1560)] = 68187, - [SMALL_STATE(1561)] = 68197, - [SMALL_STATE(1562)] = 68207, - [SMALL_STATE(1563)] = 68217, - [SMALL_STATE(1564)] = 68225, - [SMALL_STATE(1565)] = 68235, - [SMALL_STATE(1566)] = 68245, - [SMALL_STATE(1567)] = 68255, - [SMALL_STATE(1568)] = 68265, - [SMALL_STATE(1569)] = 68273, - [SMALL_STATE(1570)] = 68283, - [SMALL_STATE(1571)] = 68291, - [SMALL_STATE(1572)] = 68299, - [SMALL_STATE(1573)] = 68307, - [SMALL_STATE(1574)] = 68315, - [SMALL_STATE(1575)] = 68325, - [SMALL_STATE(1576)] = 68333, - [SMALL_STATE(1577)] = 68343, - [SMALL_STATE(1578)] = 68351, - [SMALL_STATE(1579)] = 68361, - [SMALL_STATE(1580)] = 68369, - [SMALL_STATE(1581)] = 68377, - [SMALL_STATE(1582)] = 68385, - [SMALL_STATE(1583)] = 68395, - [SMALL_STATE(1584)] = 68402, - [SMALL_STATE(1585)] = 68409, - [SMALL_STATE(1586)] = 68416, - [SMALL_STATE(1587)] = 68423, - [SMALL_STATE(1588)] = 68430, - [SMALL_STATE(1589)] = 68437, - [SMALL_STATE(1590)] = 68444, - [SMALL_STATE(1591)] = 68451, - [SMALL_STATE(1592)] = 68458, - [SMALL_STATE(1593)] = 68465, - [SMALL_STATE(1594)] = 68472, - [SMALL_STATE(1595)] = 68479, - [SMALL_STATE(1596)] = 68486, - [SMALL_STATE(1597)] = 68493, - [SMALL_STATE(1598)] = 68500, - [SMALL_STATE(1599)] = 68507, - [SMALL_STATE(1600)] = 68514, - [SMALL_STATE(1601)] = 68521, - [SMALL_STATE(1602)] = 68528, - [SMALL_STATE(1603)] = 68535, - [SMALL_STATE(1604)] = 68542, - [SMALL_STATE(1605)] = 68549, - [SMALL_STATE(1606)] = 68556, - [SMALL_STATE(1607)] = 68563, - [SMALL_STATE(1608)] = 68570, - [SMALL_STATE(1609)] = 68577, - [SMALL_STATE(1610)] = 68584, - [SMALL_STATE(1611)] = 68591, - [SMALL_STATE(1612)] = 68598, - [SMALL_STATE(1613)] = 68605, - [SMALL_STATE(1614)] = 68612, - [SMALL_STATE(1615)] = 68619, - [SMALL_STATE(1616)] = 68626, - [SMALL_STATE(1617)] = 68633, - [SMALL_STATE(1618)] = 68640, - [SMALL_STATE(1619)] = 68647, - [SMALL_STATE(1620)] = 68654, - [SMALL_STATE(1621)] = 68661, - [SMALL_STATE(1622)] = 68668, - [SMALL_STATE(1623)] = 68675, - [SMALL_STATE(1624)] = 68682, - [SMALL_STATE(1625)] = 68689, - [SMALL_STATE(1626)] = 68696, - [SMALL_STATE(1627)] = 68703, - [SMALL_STATE(1628)] = 68710, - [SMALL_STATE(1629)] = 68717, - [SMALL_STATE(1630)] = 68724, - [SMALL_STATE(1631)] = 68731, - [SMALL_STATE(1632)] = 68738, - [SMALL_STATE(1633)] = 68745, - [SMALL_STATE(1634)] = 68752, - [SMALL_STATE(1635)] = 68759, - [SMALL_STATE(1636)] = 68766, - [SMALL_STATE(1637)] = 68773, - [SMALL_STATE(1638)] = 68780, - [SMALL_STATE(1639)] = 68787, - [SMALL_STATE(1640)] = 68794, - [SMALL_STATE(1641)] = 68801, - [SMALL_STATE(1642)] = 68808, - [SMALL_STATE(1643)] = 68815, - [SMALL_STATE(1644)] = 68822, - [SMALL_STATE(1645)] = 68829, - [SMALL_STATE(1646)] = 68836, - [SMALL_STATE(1647)] = 68843, - [SMALL_STATE(1648)] = 68850, - [SMALL_STATE(1649)] = 68857, - [SMALL_STATE(1650)] = 68864, - [SMALL_STATE(1651)] = 68871, - [SMALL_STATE(1652)] = 68878, - [SMALL_STATE(1653)] = 68885, - [SMALL_STATE(1654)] = 68892, - [SMALL_STATE(1655)] = 68899, - [SMALL_STATE(1656)] = 68906, - [SMALL_STATE(1657)] = 68913, - [SMALL_STATE(1658)] = 68920, - [SMALL_STATE(1659)] = 68927, - [SMALL_STATE(1660)] = 68934, - [SMALL_STATE(1661)] = 68941, - [SMALL_STATE(1662)] = 68948, - [SMALL_STATE(1663)] = 68955, - [SMALL_STATE(1664)] = 68962, - [SMALL_STATE(1665)] = 68969, - [SMALL_STATE(1666)] = 68976, - [SMALL_STATE(1667)] = 68983, - [SMALL_STATE(1668)] = 68990, - [SMALL_STATE(1669)] = 68997, - [SMALL_STATE(1670)] = 69004, - [SMALL_STATE(1671)] = 69011, - [SMALL_STATE(1672)] = 69018, - [SMALL_STATE(1673)] = 69025, - [SMALL_STATE(1674)] = 69032, - [SMALL_STATE(1675)] = 69039, - [SMALL_STATE(1676)] = 69046, - [SMALL_STATE(1677)] = 69053, - [SMALL_STATE(1678)] = 69060, - [SMALL_STATE(1679)] = 69067, - [SMALL_STATE(1680)] = 69074, - [SMALL_STATE(1681)] = 69081, - [SMALL_STATE(1682)] = 69088, - [SMALL_STATE(1683)] = 69095, - [SMALL_STATE(1684)] = 69102, - [SMALL_STATE(1685)] = 69109, - [SMALL_STATE(1686)] = 69116, - [SMALL_STATE(1687)] = 69123, - [SMALL_STATE(1688)] = 69130, - [SMALL_STATE(1689)] = 69137, - [SMALL_STATE(1690)] = 69144, - [SMALL_STATE(1691)] = 69151, - [SMALL_STATE(1692)] = 69158, - [SMALL_STATE(1693)] = 69165, - [SMALL_STATE(1694)] = 69172, - [SMALL_STATE(1695)] = 69179, - [SMALL_STATE(1696)] = 69186, - [SMALL_STATE(1697)] = 69193, - [SMALL_STATE(1698)] = 69200, - [SMALL_STATE(1699)] = 69207, - [SMALL_STATE(1700)] = 69214, - [SMALL_STATE(1701)] = 69221, - [SMALL_STATE(1702)] = 69228, - [SMALL_STATE(1703)] = 69235, - [SMALL_STATE(1704)] = 69242, - [SMALL_STATE(1705)] = 69249, - [SMALL_STATE(1706)] = 69256, - [SMALL_STATE(1707)] = 69263, - [SMALL_STATE(1708)] = 69270, - [SMALL_STATE(1709)] = 69277, - [SMALL_STATE(1710)] = 69284, - [SMALL_STATE(1711)] = 69291, - [SMALL_STATE(1712)] = 69298, - [SMALL_STATE(1713)] = 69305, - [SMALL_STATE(1714)] = 69312, - [SMALL_STATE(1715)] = 69319, - [SMALL_STATE(1716)] = 69326, - [SMALL_STATE(1717)] = 69333, - [SMALL_STATE(1718)] = 69340, - [SMALL_STATE(1719)] = 69347, - [SMALL_STATE(1720)] = 69354, - [SMALL_STATE(1721)] = 69361, - [SMALL_STATE(1722)] = 69368, + [SMALL_STATE(157)] = 0, + [SMALL_STATE(158)] = 127, + [SMALL_STATE(159)] = 254, + [SMALL_STATE(160)] = 379, + [SMALL_STATE(161)] = 504, + [SMALL_STATE(162)] = 615, + [SMALL_STATE(163)] = 726, + [SMALL_STATE(164)] = 851, + [SMALL_STATE(165)] = 978, + [SMALL_STATE(166)] = 1100, + [SMALL_STATE(167)] = 1222, + [SMALL_STATE(168)] = 1344, + [SMALL_STATE(169)] = 1466, + [SMALL_STATE(170)] = 1581, + [SMALL_STATE(171)] = 1696, + [SMALL_STATE(172)] = 1806, + [SMALL_STATE(173)] = 1916, + [SMALL_STATE(174)] = 2026, + [SMALL_STATE(175)] = 2135, + [SMALL_STATE(176)] = 2244, + [SMALL_STATE(177)] = 2353, + [SMALL_STATE(178)] = 2462, + [SMALL_STATE(179)] = 2577, + [SMALL_STATE(180)] = 2690, + [SMALL_STATE(181)] = 2799, + [SMALL_STATE(182)] = 2914, + [SMALL_STATE(183)] = 3027, + [SMALL_STATE(184)] = 3144, + [SMALL_STATE(185)] = 3255, + [SMALL_STATE(186)] = 3364, + [SMALL_STATE(187)] = 3479, + [SMALL_STATE(188)] = 3588, + [SMALL_STATE(189)] = 3703, + [SMALL_STATE(190)] = 3814, + [SMALL_STATE(191)] = 3927, + [SMALL_STATE(192)] = 4037, + [SMALL_STATE(193)] = 4151, + [SMALL_STATE(194)] = 4261, + [SMALL_STATE(195)] = 4371, + [SMALL_STATE(196)] = 4481, + [SMALL_STATE(197)] = 4591, + [SMALL_STATE(198)] = 4701, + [SMALL_STATE(199)] = 4811, + [SMALL_STATE(200)] = 4921, + [SMALL_STATE(201)] = 5031, + [SMALL_STATE(202)] = 5141, + [SMALL_STATE(203)] = 5247, + [SMALL_STATE(204)] = 5357, + [SMALL_STATE(205)] = 5467, + [SMALL_STATE(206)] = 5577, + [SMALL_STATE(207)] = 5687, + [SMALL_STATE(208)] = 5797, + [SMALL_STATE(209)] = 5909, + [SMALL_STATE(210)] = 6023, + [SMALL_STATE(211)] = 6135, + [SMALL_STATE(212)] = 6245, + [SMALL_STATE(213)] = 6357, + [SMALL_STATE(214)] = 6471, + [SMALL_STATE(215)] = 6577, + [SMALL_STATE(216)] = 6691, + [SMALL_STATE(217)] = 6801, + [SMALL_STATE(218)] = 6911, + [SMALL_STATE(219)] = 7021, + [SMALL_STATE(220)] = 7131, + [SMALL_STATE(221)] = 7241, + [SMALL_STATE(222)] = 7351, + [SMALL_STATE(223)] = 7465, + [SMALL_STATE(224)] = 7577, + [SMALL_STATE(225)] = 7683, + [SMALL_STATE(226)] = 7793, + [SMALL_STATE(227)] = 7903, + [SMALL_STATE(228)] = 8013, + [SMALL_STATE(229)] = 8119, + [SMALL_STATE(230)] = 8229, + [SMALL_STATE(231)] = 8339, + [SMALL_STATE(232)] = 8453, + [SMALL_STATE(233)] = 8565, + [SMALL_STATE(234)] = 8675, + [SMALL_STATE(235)] = 8789, + [SMALL_STATE(236)] = 8901, + [SMALL_STATE(237)] = 9015, + [SMALL_STATE(238)] = 9129, + [SMALL_STATE(239)] = 9236, + [SMALL_STATE(240)] = 9343, + [SMALL_STATE(241)] = 9450, + [SMALL_STATE(242)] = 9557, + [SMALL_STATE(243)] = 9664, + [SMALL_STATE(244)] = 9771, + [SMALL_STATE(245)] = 9866, + [SMALL_STATE(246)] = 9973, + [SMALL_STATE(247)] = 10080, + [SMALL_STATE(248)] = 10186, + [SMALL_STATE(249)] = 10292, + [SMALL_STATE(250)] = 10398, + [SMALL_STATE(251)] = 10502, + [SMALL_STATE(252)] = 10608, + [SMALL_STATE(253)] = 10712, + [SMALL_STATE(254)] = 10818, + [SMALL_STATE(255)] = 10921, + [SMALL_STATE(256)] = 11024, + [SMALL_STATE(257)] = 11127, + [SMALL_STATE(258)] = 11230, + [SMALL_STATE(259)] = 11333, + [SMALL_STATE(260)] = 11436, + [SMALL_STATE(261)] = 11539, + [SMALL_STATE(262)] = 11642, + [SMALL_STATE(263)] = 11745, + [SMALL_STATE(264)] = 11848, + [SMALL_STATE(265)] = 11951, + [SMALL_STATE(266)] = 12051, + [SMALL_STATE(267)] = 12125, + [SMALL_STATE(268)] = 12199, + [SMALL_STATE(269)] = 12301, + [SMALL_STATE(270)] = 12403, + [SMALL_STATE(271)] = 12505, + [SMALL_STATE(272)] = 12607, + [SMALL_STATE(273)] = 12681, + [SMALL_STATE(274)] = 12783, + [SMALL_STATE(275)] = 12885, + [SMALL_STATE(276)] = 12959, + [SMALL_STATE(277)] = 13059, + [SMALL_STATE(278)] = 13161, + [SMALL_STATE(279)] = 13235, + [SMALL_STATE(280)] = 13335, + [SMALL_STATE(281)] = 13437, + [SMALL_STATE(282)] = 13511, + [SMALL_STATE(283)] = 13585, + [SMALL_STATE(284)] = 13659, + [SMALL_STATE(285)] = 13761, + [SMALL_STATE(286)] = 13863, + [SMALL_STATE(287)] = 13965, + [SMALL_STATE(288)] = 14067, + [SMALL_STATE(289)] = 14169, + [SMALL_STATE(290)] = 14268, + [SMALL_STATE(291)] = 14367, + [SMALL_STATE(292)] = 14464, + [SMALL_STATE(293)] = 14563, + [SMALL_STATE(294)] = 14660, + [SMALL_STATE(295)] = 14759, + [SMALL_STATE(296)] = 14858, + [SMALL_STATE(297)] = 14955, + [SMALL_STATE(298)] = 15052, + [SMALL_STATE(299)] = 15149, + [SMALL_STATE(300)] = 15246, + [SMALL_STATE(301)] = 15343, + [SMALL_STATE(302)] = 15440, + [SMALL_STATE(303)] = 15537, + [SMALL_STATE(304)] = 15634, + [SMALL_STATE(305)] = 15733, + [SMALL_STATE(306)] = 15832, + [SMALL_STATE(307)] = 15931, + [SMALL_STATE(308)] = 16028, + [SMALL_STATE(309)] = 16125, + [SMALL_STATE(310)] = 16224, + [SMALL_STATE(311)] = 16321, + [SMALL_STATE(312)] = 16381, + [SMALL_STATE(313)] = 16441, + [SMALL_STATE(314)] = 16501, + [SMALL_STATE(315)] = 16565, + [SMALL_STATE(316)] = 16629, + [SMALL_STATE(317)] = 16689, + [SMALL_STATE(318)] = 16749, + [SMALL_STATE(319)] = 16809, + [SMALL_STATE(320)] = 16879, + [SMALL_STATE(321)] = 16949, + [SMALL_STATE(322)] = 17019, + [SMALL_STATE(323)] = 17089, + [SMALL_STATE(324)] = 17185, + [SMALL_STATE(325)] = 17249, + [SMALL_STATE(326)] = 17309, + [SMALL_STATE(327)] = 17369, + [SMALL_STATE(328)] = 17439, + [SMALL_STATE(329)] = 17499, + [SMALL_STATE(330)] = 17569, + [SMALL_STATE(331)] = 17629, + [SMALL_STATE(332)] = 17693, + [SMALL_STATE(333)] = 17763, + [SMALL_STATE(334)] = 17823, + [SMALL_STATE(335)] = 17883, + [SMALL_STATE(336)] = 17979, + [SMALL_STATE(337)] = 18075, + [SMALL_STATE(338)] = 18145, + [SMALL_STATE(339)] = 18238, + [SMALL_STATE(340)] = 18331, + [SMALL_STATE(341)] = 18424, + [SMALL_STATE(342)] = 18517, + [SMALL_STATE(343)] = 18610, + [SMALL_STATE(344)] = 18705, + [SMALL_STATE(345)] = 18798, + [SMALL_STATE(346)] = 18891, + [SMALL_STATE(347)] = 18984, + [SMALL_STATE(348)] = 19057, + [SMALL_STATE(349)] = 19150, + [SMALL_STATE(350)] = 19243, + [SMALL_STATE(351)] = 19308, + [SMALL_STATE(352)] = 19401, + [SMALL_STATE(353)] = 19494, + [SMALL_STATE(354)] = 19587, + [SMALL_STATE(355)] = 19680, + [SMALL_STATE(356)] = 19773, + [SMALL_STATE(357)] = 19866, + [SMALL_STATE(358)] = 19959, + [SMALL_STATE(359)] = 20052, + [SMALL_STATE(360)] = 20145, + [SMALL_STATE(361)] = 20238, + [SMALL_STATE(362)] = 20331, + [SMALL_STATE(363)] = 20424, + [SMALL_STATE(364)] = 20517, + [SMALL_STATE(365)] = 20610, + [SMALL_STATE(366)] = 20703, + [SMALL_STATE(367)] = 20796, + [SMALL_STATE(368)] = 20889, + [SMALL_STATE(369)] = 20982, + [SMALL_STATE(370)] = 21075, + [SMALL_STATE(371)] = 21168, + [SMALL_STATE(372)] = 21261, + [SMALL_STATE(373)] = 21354, + [SMALL_STATE(374)] = 21447, + [SMALL_STATE(375)] = 21540, + [SMALL_STATE(376)] = 21633, + [SMALL_STATE(377)] = 21726, + [SMALL_STATE(378)] = 21819, + [SMALL_STATE(379)] = 21912, + [SMALL_STATE(380)] = 22005, + [SMALL_STATE(381)] = 22098, + [SMALL_STATE(382)] = 22191, + [SMALL_STATE(383)] = 22284, + [SMALL_STATE(384)] = 22377, + [SMALL_STATE(385)] = 22470, + [SMALL_STATE(386)] = 22563, + [SMALL_STATE(387)] = 22656, + [SMALL_STATE(388)] = 22749, + [SMALL_STATE(389)] = 22842, + [SMALL_STATE(390)] = 22935, + [SMALL_STATE(391)] = 23028, + [SMALL_STATE(392)] = 23121, + [SMALL_STATE(393)] = 23186, + [SMALL_STATE(394)] = 23279, + [SMALL_STATE(395)] = 23372, + [SMALL_STATE(396)] = 23465, + [SMALL_STATE(397)] = 23558, + [SMALL_STATE(398)] = 23651, + [SMALL_STATE(399)] = 23744, + [SMALL_STATE(400)] = 23837, + [SMALL_STATE(401)] = 23930, + [SMALL_STATE(402)] = 24025, + [SMALL_STATE(403)] = 24118, + [SMALL_STATE(404)] = 24211, + [SMALL_STATE(405)] = 24304, + [SMALL_STATE(406)] = 24397, + [SMALL_STATE(407)] = 24490, + [SMALL_STATE(408)] = 24583, + [SMALL_STATE(409)] = 24676, + [SMALL_STATE(410)] = 24769, + [SMALL_STATE(411)] = 24862, + [SMALL_STATE(412)] = 24955, + [SMALL_STATE(413)] = 25048, + [SMALL_STATE(414)] = 25141, + [SMALL_STATE(415)] = 25234, + [SMALL_STATE(416)] = 25327, + [SMALL_STATE(417)] = 25420, + [SMALL_STATE(418)] = 25513, + [SMALL_STATE(419)] = 25606, + [SMALL_STATE(420)] = 25699, + [SMALL_STATE(421)] = 25792, + [SMALL_STATE(422)] = 25885, + [SMALL_STATE(423)] = 25978, + [SMALL_STATE(424)] = 26071, + [SMALL_STATE(425)] = 26164, + [SMALL_STATE(426)] = 26257, + [SMALL_STATE(427)] = 26350, + [SMALL_STATE(428)] = 26443, + [SMALL_STATE(429)] = 26536, + [SMALL_STATE(430)] = 26629, + [SMALL_STATE(431)] = 26722, + [SMALL_STATE(432)] = 26815, + [SMALL_STATE(433)] = 26908, + [SMALL_STATE(434)] = 27001, + [SMALL_STATE(435)] = 27094, + [SMALL_STATE(436)] = 27187, + [SMALL_STATE(437)] = 27280, + [SMALL_STATE(438)] = 27353, + [SMALL_STATE(439)] = 27446, + [SMALL_STATE(440)] = 27504, + [SMALL_STATE(441)] = 27566, + [SMALL_STATE(442)] = 27624, + [SMALL_STATE(443)] = 27682, + [SMALL_STATE(444)] = 27740, + [SMALL_STATE(445)] = 27802, + [SMALL_STATE(446)] = 27864, + [SMALL_STATE(447)] = 27922, + [SMALL_STATE(448)] = 27980, + [SMALL_STATE(449)] = 28038, + [SMALL_STATE(450)] = 28096, + [SMALL_STATE(451)] = 28154, + [SMALL_STATE(452)] = 28212, + [SMALL_STATE(453)] = 28282, + [SMALL_STATE(454)] = 28352, + [SMALL_STATE(455)] = 28410, + [SMALL_STATE(456)] = 28468, + [SMALL_STATE(457)] = 28526, + [SMALL_STATE(458)] = 28584, + [SMALL_STATE(459)] = 28642, + [SMALL_STATE(460)] = 28700, + [SMALL_STATE(461)] = 28758, + [SMALL_STATE(462)] = 28820, + [SMALL_STATE(463)] = 28878, + [SMALL_STATE(464)] = 28936, + [SMALL_STATE(465)] = 28994, + [SMALL_STATE(466)] = 29089, + [SMALL_STATE(467)] = 29182, + [SMALL_STATE(468)] = 29239, + [SMALL_STATE(469)] = 29300, + [SMALL_STATE(470)] = 29367, + [SMALL_STATE(471)] = 29430, + [SMALL_STATE(472)] = 29523, + [SMALL_STATE(473)] = 29580, + [SMALL_STATE(474)] = 29637, + [SMALL_STATE(475)] = 29698, + [SMALL_STATE(476)] = 29759, + [SMALL_STATE(477)] = 29820, + [SMALL_STATE(478)] = 29881, + [SMALL_STATE(479)] = 29942, + [SMALL_STATE(480)] = 29999, + [SMALL_STATE(481)] = 30060, + [SMALL_STATE(482)] = 30121, + [SMALL_STATE(483)] = 30182, + [SMALL_STATE(484)] = 30243, + [SMALL_STATE(485)] = 30304, + [SMALL_STATE(486)] = 30365, + [SMALL_STATE(487)] = 30426, + [SMALL_STATE(488)] = 30483, + [SMALL_STATE(489)] = 30544, + [SMALL_STATE(490)] = 30601, + [SMALL_STATE(491)] = 30662, + [SMALL_STATE(492)] = 30723, + [SMALL_STATE(493)] = 30779, + [SMALL_STATE(494)] = 30835, + [SMALL_STATE(495)] = 30899, + [SMALL_STATE(496)] = 30991, + [SMALL_STATE(497)] = 31047, + [SMALL_STATE(498)] = 31103, + [SMALL_STATE(499)] = 31159, + [SMALL_STATE(500)] = 31223, + [SMALL_STATE(501)] = 31279, + [SMALL_STATE(502)] = 31371, + [SMALL_STATE(503)] = 31427, + [SMALL_STATE(504)] = 31483, + [SMALL_STATE(505)] = 31539, + [SMALL_STATE(506)] = 31595, + [SMALL_STATE(507)] = 31687, + [SMALL_STATE(508)] = 31743, + [SMALL_STATE(509)] = 31799, + [SMALL_STATE(510)] = 31891, + [SMALL_STATE(511)] = 31983, + [SMALL_STATE(512)] = 32039, + [SMALL_STATE(513)] = 32095, + [SMALL_STATE(514)] = 32187, + [SMALL_STATE(515)] = 32242, + [SMALL_STATE(516)] = 32303, + [SMALL_STATE(517)] = 32358, + [SMALL_STATE(518)] = 32413, + [SMALL_STATE(519)] = 32468, + [SMALL_STATE(520)] = 32523, + [SMALL_STATE(521)] = 32578, + [SMALL_STATE(522)] = 32633, + [SMALL_STATE(523)] = 32688, + [SMALL_STATE(524)] = 32743, + [SMALL_STATE(525)] = 32804, + [SMALL_STATE(526)] = 32859, + [SMALL_STATE(527)] = 32914, + [SMALL_STATE(528)] = 33003, + [SMALL_STATE(529)] = 33058, + [SMALL_STATE(530)] = 33113, + [SMALL_STATE(531)] = 33168, + [SMALL_STATE(532)] = 33223, + [SMALL_STATE(533)] = 33278, + [SMALL_STATE(534)] = 33333, + [SMALL_STATE(535)] = 33388, + [SMALL_STATE(536)] = 33443, + [SMALL_STATE(537)] = 33498, + [SMALL_STATE(538)] = 33553, + [SMALL_STATE(539)] = 33608, + [SMALL_STATE(540)] = 33663, + [SMALL_STATE(541)] = 33718, + [SMALL_STATE(542)] = 33773, + [SMALL_STATE(543)] = 33828, + [SMALL_STATE(544)] = 33883, + [SMALL_STATE(545)] = 33938, + [SMALL_STATE(546)] = 33993, + [SMALL_STATE(547)] = 34048, + [SMALL_STATE(548)] = 34103, + [SMALL_STATE(549)] = 34158, + [SMALL_STATE(550)] = 34213, + [SMALL_STATE(551)] = 34268, + [SMALL_STATE(552)] = 34323, + [SMALL_STATE(553)] = 34378, + [SMALL_STATE(554)] = 34433, + [SMALL_STATE(555)] = 34488, + [SMALL_STATE(556)] = 34543, + [SMALL_STATE(557)] = 34598, + [SMALL_STATE(558)] = 34653, + [SMALL_STATE(559)] = 34708, + [SMALL_STATE(560)] = 34763, + [SMALL_STATE(561)] = 34818, + [SMALL_STATE(562)] = 34873, + [SMALL_STATE(563)] = 34928, + [SMALL_STATE(564)] = 34983, + [SMALL_STATE(565)] = 35038, + [SMALL_STATE(566)] = 35093, + [SMALL_STATE(567)] = 35148, + [SMALL_STATE(568)] = 35203, + [SMALL_STATE(569)] = 35258, + [SMALL_STATE(570)] = 35313, + [SMALL_STATE(571)] = 35368, + [SMALL_STATE(572)] = 35423, + [SMALL_STATE(573)] = 35478, + [SMALL_STATE(574)] = 35533, + [SMALL_STATE(575)] = 35588, + [SMALL_STATE(576)] = 35643, + [SMALL_STATE(577)] = 35698, + [SMALL_STATE(578)] = 35753, + [SMALL_STATE(579)] = 35808, + [SMALL_STATE(580)] = 35863, + [SMALL_STATE(581)] = 35918, + [SMALL_STATE(582)] = 35973, + [SMALL_STATE(583)] = 36028, + [SMALL_STATE(584)] = 36083, + [SMALL_STATE(585)] = 36138, + [SMALL_STATE(586)] = 36193, + [SMALL_STATE(587)] = 36248, + [SMALL_STATE(588)] = 36303, + [SMALL_STATE(589)] = 36358, + [SMALL_STATE(590)] = 36447, + [SMALL_STATE(591)] = 36502, + [SMALL_STATE(592)] = 36557, + [SMALL_STATE(593)] = 36612, + [SMALL_STATE(594)] = 36667, + [SMALL_STATE(595)] = 36722, + [SMALL_STATE(596)] = 36777, + [SMALL_STATE(597)] = 36832, + [SMALL_STATE(598)] = 36887, + [SMALL_STATE(599)] = 36942, + [SMALL_STATE(600)] = 36997, + [SMALL_STATE(601)] = 37052, + [SMALL_STATE(602)] = 37107, + [SMALL_STATE(603)] = 37162, + [SMALL_STATE(604)] = 37217, + [SMALL_STATE(605)] = 37272, + [SMALL_STATE(606)] = 37327, + [SMALL_STATE(607)] = 37382, + [SMALL_STATE(608)] = 37437, + [SMALL_STATE(609)] = 37492, + [SMALL_STATE(610)] = 37547, + [SMALL_STATE(611)] = 37602, + [SMALL_STATE(612)] = 37657, + [SMALL_STATE(613)] = 37712, + [SMALL_STATE(614)] = 37767, + [SMALL_STATE(615)] = 37828, + [SMALL_STATE(616)] = 37883, + [SMALL_STATE(617)] = 37938, + [SMALL_STATE(618)] = 38000, + [SMALL_STATE(619)] = 38062, + [SMALL_STATE(620)] = 38145, + [SMALL_STATE(621)] = 38222, + [SMALL_STATE(622)] = 38299, + [SMALL_STATE(623)] = 38376, + [SMALL_STATE(624)] = 38453, + [SMALL_STATE(625)] = 38530, + [SMALL_STATE(626)] = 38607, + [SMALL_STATE(627)] = 38681, + [SMALL_STATE(628)] = 38735, + [SMALL_STATE(629)] = 38809, + [SMALL_STATE(630)] = 38883, + [SMALL_STATE(631)] = 38957, + [SMALL_STATE(632)] = 39031, + [SMALL_STATE(633)] = 39109, + [SMALL_STATE(634)] = 39183, + [SMALL_STATE(635)] = 39257, + [SMALL_STATE(636)] = 39331, + [SMALL_STATE(637)] = 39405, + [SMALL_STATE(638)] = 39479, + [SMALL_STATE(639)] = 39553, + [SMALL_STATE(640)] = 39631, + [SMALL_STATE(641)] = 39705, + [SMALL_STATE(642)] = 39779, + [SMALL_STATE(643)] = 39853, + [SMALL_STATE(644)] = 39927, + [SMALL_STATE(645)] = 40001, + [SMALL_STATE(646)] = 40075, + [SMALL_STATE(647)] = 40149, + [SMALL_STATE(648)] = 40223, + [SMALL_STATE(649)] = 40297, + [SMALL_STATE(650)] = 40371, + [SMALL_STATE(651)] = 40445, + [SMALL_STATE(652)] = 40519, + [SMALL_STATE(653)] = 40593, + [SMALL_STATE(654)] = 40667, + [SMALL_STATE(655)] = 40741, + [SMALL_STATE(656)] = 40815, + [SMALL_STATE(657)] = 40889, + [SMALL_STATE(658)] = 40963, + [SMALL_STATE(659)] = 41037, + [SMALL_STATE(660)] = 41111, + [SMALL_STATE(661)] = 41185, + [SMALL_STATE(662)] = 41259, + [SMALL_STATE(663)] = 41333, + [SMALL_STATE(664)] = 41407, + [SMALL_STATE(665)] = 41481, + [SMALL_STATE(666)] = 41555, + [SMALL_STATE(667)] = 41629, + [SMALL_STATE(668)] = 41703, + [SMALL_STATE(669)] = 41777, + [SMALL_STATE(670)] = 41851, + [SMALL_STATE(671)] = 41925, + [SMALL_STATE(672)] = 41999, + [SMALL_STATE(673)] = 42073, + [SMALL_STATE(674)] = 42147, + [SMALL_STATE(675)] = 42221, + [SMALL_STATE(676)] = 42295, + [SMALL_STATE(677)] = 42369, + [SMALL_STATE(678)] = 42443, + [SMALL_STATE(679)] = 42517, + [SMALL_STATE(680)] = 42591, + [SMALL_STATE(681)] = 42665, + [SMALL_STATE(682)] = 42739, + [SMALL_STATE(683)] = 42813, + [SMALL_STATE(684)] = 42887, + [SMALL_STATE(685)] = 42961, + [SMALL_STATE(686)] = 43015, + [SMALL_STATE(687)] = 43089, + [SMALL_STATE(688)] = 43163, + [SMALL_STATE(689)] = 43237, + [SMALL_STATE(690)] = 43311, + [SMALL_STATE(691)] = 43365, + [SMALL_STATE(692)] = 43439, + [SMALL_STATE(693)] = 43513, + [SMALL_STATE(694)] = 43567, + [SMALL_STATE(695)] = 43621, + [SMALL_STATE(696)] = 43695, + [SMALL_STATE(697)] = 43769, + [SMALL_STATE(698)] = 43843, + [SMALL_STATE(699)] = 43897, + [SMALL_STATE(700)] = 43971, + [SMALL_STATE(701)] = 44019, + [SMALL_STATE(702)] = 44067, + [SMALL_STATE(703)] = 44115, + [SMALL_STATE(704)] = 44163, + [SMALL_STATE(705)] = 44244, + [SMALL_STATE(706)] = 44325, + [SMALL_STATE(707)] = 44372, + [SMALL_STATE(708)] = 44419, + [SMALL_STATE(709)] = 44466, + [SMALL_STATE(710)] = 44513, + [SMALL_STATE(711)] = 44560, + [SMALL_STATE(712)] = 44607, + [SMALL_STATE(713)] = 44654, + [SMALL_STATE(714)] = 44701, + [SMALL_STATE(715)] = 44748, + [SMALL_STATE(716)] = 44795, + [SMALL_STATE(717)] = 44842, + [SMALL_STATE(718)] = 44889, + [SMALL_STATE(719)] = 44936, + [SMALL_STATE(720)] = 44983, + [SMALL_STATE(721)] = 45030, + [SMALL_STATE(722)] = 45077, + [SMALL_STATE(723)] = 45124, + [SMALL_STATE(724)] = 45171, + [SMALL_STATE(725)] = 45218, + [SMALL_STATE(726)] = 45265, + [SMALL_STATE(727)] = 45312, + [SMALL_STATE(728)] = 45359, + [SMALL_STATE(729)] = 45406, + [SMALL_STATE(730)] = 45453, + [SMALL_STATE(731)] = 45500, + [SMALL_STATE(732)] = 45547, + [SMALL_STATE(733)] = 45594, + [SMALL_STATE(734)] = 45641, + [SMALL_STATE(735)] = 45688, + [SMALL_STATE(736)] = 45735, + [SMALL_STATE(737)] = 45782, + [SMALL_STATE(738)] = 45829, + [SMALL_STATE(739)] = 45876, + [SMALL_STATE(740)] = 45944, + [SMALL_STATE(741)] = 46014, + [SMALL_STATE(742)] = 46084, + [SMALL_STATE(743)] = 46152, + [SMALL_STATE(744)] = 46212, + [SMALL_STATE(745)] = 46268, + [SMALL_STATE(746)] = 46334, + [SMALL_STATE(747)] = 46398, + [SMALL_STATE(748)] = 46454, + [SMALL_STATE(749)] = 46510, + [SMALL_STATE(750)] = 46560, + [SMALL_STATE(751)] = 46610, + [SMALL_STATE(752)] = 46666, + [SMALL_STATE(753)] = 46728, + [SMALL_STATE(754)] = 46778, + [SMALL_STATE(755)] = 46828, + [SMALL_STATE(756)] = 46884, + [SMALL_STATE(757)] = 46946, + [SMALL_STATE(758)] = 47016, + [SMALL_STATE(759)] = 47076, + [SMALL_STATE(760)] = 47132, + [SMALL_STATE(761)] = 47198, + [SMALL_STATE(762)] = 47262, + [SMALL_STATE(763)] = 47332, + [SMALL_STATE(764)] = 47402, + [SMALL_STATE(765)] = 47472, + [SMALL_STATE(766)] = 47528, + [SMALL_STATE(767)] = 47584, + [SMALL_STATE(768)] = 47629, + [SMALL_STATE(769)] = 47678, + [SMALL_STATE(770)] = 47727, + [SMALL_STATE(771)] = 47776, + [SMALL_STATE(772)] = 47825, + [SMALL_STATE(773)] = 47874, + [SMALL_STATE(774)] = 47953, + [SMALL_STATE(775)] = 48000, + [SMALL_STATE(776)] = 48077, + [SMALL_STATE(777)] = 48126, + [SMALL_STATE(778)] = 48175, + [SMALL_STATE(779)] = 48222, + [SMALL_STATE(780)] = 48271, + [SMALL_STATE(781)] = 48350, + [SMALL_STATE(782)] = 48399, + [SMALL_STATE(783)] = 48448, + [SMALL_STATE(784)] = 48493, + [SMALL_STATE(785)] = 48542, + [SMALL_STATE(786)] = 48591, + [SMALL_STATE(787)] = 48638, + [SMALL_STATE(788)] = 48685, + [SMALL_STATE(789)] = 48753, + [SMALL_STATE(790)] = 48829, + [SMALL_STATE(791)] = 48877, + [SMALL_STATE(792)] = 48925, + [SMALL_STATE(793)] = 48969, + [SMALL_STATE(794)] = 49013, + [SMALL_STATE(795)] = 49057, + [SMALL_STATE(796)] = 49101, + [SMALL_STATE(797)] = 49155, + [SMALL_STATE(798)] = 49215, + [SMALL_STATE(799)] = 49283, + [SMALL_STATE(800)] = 49337, + [SMALL_STATE(801)] = 49405, + [SMALL_STATE(802)] = 49471, + [SMALL_STATE(803)] = 49529, + [SMALL_STATE(804)] = 49583, + [SMALL_STATE(805)] = 49637, + [SMALL_STATE(806)] = 49691, + [SMALL_STATE(807)] = 49755, + [SMALL_STATE(808)] = 49817, + [SMALL_STATE(809)] = 49871, + [SMALL_STATE(810)] = 49931, + [SMALL_STATE(811)] = 49999, + [SMALL_STATE(812)] = 50065, + [SMALL_STATE(813)] = 50123, + [SMALL_STATE(814)] = 50177, + [SMALL_STATE(815)] = 50241, + [SMALL_STATE(816)] = 50303, + [SMALL_STATE(817)] = 50371, + [SMALL_STATE(818)] = 50439, + [SMALL_STATE(819)] = 50493, + [SMALL_STATE(820)] = 50547, + [SMALL_STATE(821)] = 50607, + [SMALL_STATE(822)] = 50675, + [SMALL_STATE(823)] = 50741, + [SMALL_STATE(824)] = 50799, + [SMALL_STATE(825)] = 50853, + [SMALL_STATE(826)] = 50917, + [SMALL_STATE(827)] = 50979, + [SMALL_STATE(828)] = 51047, + [SMALL_STATE(829)] = 51115, + [SMALL_STATE(830)] = 51169, + [SMALL_STATE(831)] = 51223, + [SMALL_STATE(832)] = 51268, + [SMALL_STATE(833)] = 51313, + [SMALL_STATE(834)] = 51366, + [SMALL_STATE(835)] = 51409, + [SMALL_STATE(836)] = 51454, + [SMALL_STATE(837)] = 51499, + [SMALL_STATE(838)] = 51544, + [SMALL_STATE(839)] = 51589, + [SMALL_STATE(840)] = 51642, + [SMALL_STATE(841)] = 51685, + [SMALL_STATE(842)] = 51766, + [SMALL_STATE(843)] = 51811, + [SMALL_STATE(844)] = 51854, + [SMALL_STATE(845)] = 51907, + [SMALL_STATE(846)] = 51966, + [SMALL_STATE(847)] = 52009, + [SMALL_STATE(848)] = 52052, + [SMALL_STATE(849)] = 52095, + [SMALL_STATE(850)] = 52142, + [SMALL_STATE(851)] = 52189, + [SMALL_STATE(852)] = 52234, + [SMALL_STATE(853)] = 52277, + [SMALL_STATE(854)] = 52320, + [SMALL_STATE(855)] = 52365, + [SMALL_STATE(856)] = 52410, + [SMALL_STATE(857)] = 52477, + [SMALL_STATE(858)] = 52524, + [SMALL_STATE(859)] = 52571, + [SMALL_STATE(860)] = 52618, + [SMALL_STATE(861)] = 52663, + [SMALL_STATE(862)] = 52744, + [SMALL_STATE(863)] = 52809, + [SMALL_STATE(864)] = 52866, + [SMALL_STATE(865)] = 52919, + [SMALL_STATE(866)] = 52982, + [SMALL_STATE(867)] = 53043, + [SMALL_STATE(868)] = 53110, + [SMALL_STATE(869)] = 53177, + [SMALL_STATE(870)] = 53258, + [SMALL_STATE(871)] = 53339, + [SMALL_STATE(872)] = 53384, + [SMALL_STATE(873)] = 53431, + [SMALL_STATE(874)] = 53473, + [SMALL_STATE(875)] = 53515, + [SMALL_STATE(876)] = 53557, + [SMALL_STATE(877)] = 53599, + [SMALL_STATE(878)] = 53641, + [SMALL_STATE(879)] = 53683, + [SMALL_STATE(880)] = 53725, + [SMALL_STATE(881)] = 53767, + [SMALL_STATE(882)] = 53809, + [SMALL_STATE(883)] = 53851, + [SMALL_STATE(884)] = 53893, + [SMALL_STATE(885)] = 53935, + [SMALL_STATE(886)] = 53977, + [SMALL_STATE(887)] = 54019, + [SMALL_STATE(888)] = 54061, + [SMALL_STATE(889)] = 54103, + [SMALL_STATE(890)] = 54145, + [SMALL_STATE(891)] = 54187, + [SMALL_STATE(892)] = 54229, + [SMALL_STATE(893)] = 54271, + [SMALL_STATE(894)] = 54313, + [SMALL_STATE(895)] = 54355, + [SMALL_STATE(896)] = 54397, + [SMALL_STATE(897)] = 54477, + [SMALL_STATE(898)] = 54555, + [SMALL_STATE(899)] = 54597, + [SMALL_STATE(900)] = 54639, + [SMALL_STATE(901)] = 54681, + [SMALL_STATE(902)] = 54723, + [SMALL_STATE(903)] = 54765, + [SMALL_STATE(904)] = 54807, + [SMALL_STATE(905)] = 54849, + [SMALL_STATE(906)] = 54891, + [SMALL_STATE(907)] = 54933, + [SMALL_STATE(908)] = 54977, + [SMALL_STATE(909)] = 55019, + [SMALL_STATE(910)] = 55061, + [SMALL_STATE(911)] = 55103, + [SMALL_STATE(912)] = 55145, + [SMALL_STATE(913)] = 55187, + [SMALL_STATE(914)] = 55231, + [SMALL_STATE(915)] = 55275, + [SMALL_STATE(916)] = 55317, + [SMALL_STATE(917)] = 55359, + [SMALL_STATE(918)] = 55403, + [SMALL_STATE(919)] = 55445, + [SMALL_STATE(920)] = 55487, + [SMALL_STATE(921)] = 55529, + [SMALL_STATE(922)] = 55571, + [SMALL_STATE(923)] = 55613, + [SMALL_STATE(924)] = 55655, + [SMALL_STATE(925)] = 55699, + [SMALL_STATE(926)] = 55741, + [SMALL_STATE(927)] = 55783, + [SMALL_STATE(928)] = 55825, + [SMALL_STATE(929)] = 55867, + [SMALL_STATE(930)] = 55909, + [SMALL_STATE(931)] = 55951, + [SMALL_STATE(932)] = 56029, + [SMALL_STATE(933)] = 56071, + [SMALL_STATE(934)] = 56113, + [SMALL_STATE(935)] = 56191, + [SMALL_STATE(936)] = 56269, + [SMALL_STATE(937)] = 56311, + [SMALL_STATE(938)] = 56353, + [SMALL_STATE(939)] = 56395, + [SMALL_STATE(940)] = 56473, + [SMALL_STATE(941)] = 56515, + [SMALL_STATE(942)] = 56557, + [SMALL_STATE(943)] = 56599, + [SMALL_STATE(944)] = 56641, + [SMALL_STATE(945)] = 56683, + [SMALL_STATE(946)] = 56725, + [SMALL_STATE(947)] = 56767, + [SMALL_STATE(948)] = 56809, + [SMALL_STATE(949)] = 56851, + [SMALL_STATE(950)] = 56893, + [SMALL_STATE(951)] = 56935, + [SMALL_STATE(952)] = 56977, + [SMALL_STATE(953)] = 57018, + [SMALL_STATE(954)] = 57059, + [SMALL_STATE(955)] = 57100, + [SMALL_STATE(956)] = 57141, + [SMALL_STATE(957)] = 57182, + [SMALL_STATE(958)] = 57223, + [SMALL_STATE(959)] = 57264, + [SMALL_STATE(960)] = 57305, + [SMALL_STATE(961)] = 57346, + [SMALL_STATE(962)] = 57387, + [SMALL_STATE(963)] = 57428, + [SMALL_STATE(964)] = 57469, + [SMALL_STATE(965)] = 57510, + [SMALL_STATE(966)] = 57551, + [SMALL_STATE(967)] = 57592, + [SMALL_STATE(968)] = 57633, + [SMALL_STATE(969)] = 57674, + [SMALL_STATE(970)] = 57715, + [SMALL_STATE(971)] = 57756, + [SMALL_STATE(972)] = 57797, + [SMALL_STATE(973)] = 57838, + [SMALL_STATE(974)] = 57879, + [SMALL_STATE(975)] = 57920, + [SMALL_STATE(976)] = 57961, + [SMALL_STATE(977)] = 58002, + [SMALL_STATE(978)] = 58043, + [SMALL_STATE(979)] = 58084, + [SMALL_STATE(980)] = 58125, + [SMALL_STATE(981)] = 58166, + [SMALL_STATE(982)] = 58241, + [SMALL_STATE(983)] = 58320, + [SMALL_STATE(984)] = 58399, + [SMALL_STATE(985)] = 58444, + [SMALL_STATE(986)] = 58485, + [SMALL_STATE(987)] = 58530, + [SMALL_STATE(988)] = 58609, + [SMALL_STATE(989)] = 58650, + [SMALL_STATE(990)] = 58691, + [SMALL_STATE(991)] = 58732, + [SMALL_STATE(992)] = 58805, + [SMALL_STATE(993)] = 58875, + [SMALL_STATE(994)] = 58945, + [SMALL_STATE(995)] = 59007, + [SMALL_STATE(996)] = 59069, + [SMALL_STATE(997)] = 59108, + [SMALL_STATE(998)] = 59147, + [SMALL_STATE(999)] = 59186, + [SMALL_STATE(1000)] = 59225, + [SMALL_STATE(1001)] = 59255, + [SMALL_STATE(1002)] = 59292, + [SMALL_STATE(1003)] = 59317, + [SMALL_STATE(1004)] = 59354, + [SMALL_STATE(1005)] = 59391, + [SMALL_STATE(1006)] = 59416, + [SMALL_STATE(1007)] = 59469, + [SMALL_STATE(1008)] = 59522, + [SMALL_STATE(1009)] = 59559, + [SMALL_STATE(1010)] = 59584, + [SMALL_STATE(1011)] = 59637, + [SMALL_STATE(1012)] = 59666, + [SMALL_STATE(1013)] = 59691, + [SMALL_STATE(1014)] = 59720, + [SMALL_STATE(1015)] = 59755, + [SMALL_STATE(1016)] = 59790, + [SMALL_STATE(1017)] = 59824, + [SMALL_STATE(1018)] = 59870, + [SMALL_STATE(1019)] = 59898, + [SMALL_STATE(1020)] = 59932, + [SMALL_STATE(1021)] = 59963, + [SMALL_STATE(1022)] = 60006, + [SMALL_STATE(1023)] = 60049, + [SMALL_STATE(1024)] = 60092, + [SMALL_STATE(1025)] = 60135, + [SMALL_STATE(1026)] = 60178, + [SMALL_STATE(1027)] = 60221, + [SMALL_STATE(1028)] = 60264, + [SMALL_STATE(1029)] = 60304, + [SMALL_STATE(1030)] = 60348, + [SMALL_STATE(1031)] = 60373, + [SMALL_STATE(1032)] = 60410, + [SMALL_STATE(1033)] = 60447, + [SMALL_STATE(1034)] = 60484, + [SMALL_STATE(1035)] = 60521, + [SMALL_STATE(1036)] = 60555, + [SMALL_STATE(1037)] = 60589, + [SMALL_STATE(1038)] = 60610, + [SMALL_STATE(1039)] = 60631, + [SMALL_STATE(1040)] = 60653, + [SMALL_STATE(1041)] = 60684, + [SMALL_STATE(1042)] = 60721, + [SMALL_STATE(1043)] = 60744, + [SMALL_STATE(1044)] = 60765, + [SMALL_STATE(1045)] = 60796, + [SMALL_STATE(1046)] = 60827, + [SMALL_STATE(1047)] = 60858, + [SMALL_STATE(1048)] = 60895, + [SMALL_STATE(1049)] = 60932, + [SMALL_STATE(1050)] = 60963, + [SMALL_STATE(1051)] = 60994, + [SMALL_STATE(1052)] = 61025, + [SMALL_STATE(1053)] = 61056, + [SMALL_STATE(1054)] = 61073, + [SMALL_STATE(1055)] = 61104, + [SMALL_STATE(1056)] = 61135, + [SMALL_STATE(1057)] = 61166, + [SMALL_STATE(1058)] = 61197, + [SMALL_STATE(1059)] = 61228, + [SMALL_STATE(1060)] = 61259, + [SMALL_STATE(1061)] = 61290, + [SMALL_STATE(1062)] = 61321, + [SMALL_STATE(1063)] = 61352, + [SMALL_STATE(1064)] = 61389, + [SMALL_STATE(1065)] = 61412, + [SMALL_STATE(1066)] = 61443, + [SMALL_STATE(1067)] = 61474, + [SMALL_STATE(1068)] = 61511, + [SMALL_STATE(1069)] = 61532, + [SMALL_STATE(1070)] = 61552, + [SMALL_STATE(1071)] = 61586, + [SMALL_STATE(1072)] = 61606, + [SMALL_STATE(1073)] = 61630, + [SMALL_STATE(1074)] = 61652, + [SMALL_STATE(1075)] = 61686, + [SMALL_STATE(1076)] = 61720, + [SMALL_STATE(1077)] = 61742, + [SMALL_STATE(1078)] = 61766, + [SMALL_STATE(1079)] = 61784, + [SMALL_STATE(1080)] = 61802, + [SMALL_STATE(1081)] = 61836, + [SMALL_STATE(1082)] = 61856, + [SMALL_STATE(1083)] = 61880, + [SMALL_STATE(1084)] = 61902, + [SMALL_STATE(1085)] = 61936, + [SMALL_STATE(1086)] = 61958, + [SMALL_STATE(1087)] = 61992, + [SMALL_STATE(1088)] = 62026, + [SMALL_STATE(1089)] = 62046, + [SMALL_STATE(1090)] = 62068, + [SMALL_STATE(1091)] = 62102, + [SMALL_STATE(1092)] = 62124, + [SMALL_STATE(1093)] = 62158, + [SMALL_STATE(1094)] = 62192, + [SMALL_STATE(1095)] = 62226, + [SMALL_STATE(1096)] = 62260, + [SMALL_STATE(1097)] = 62278, + [SMALL_STATE(1098)] = 62297, + [SMALL_STATE(1099)] = 62318, + [SMALL_STATE(1100)] = 62337, + [SMALL_STATE(1101)] = 62360, + [SMALL_STATE(1102)] = 62379, + [SMALL_STATE(1103)] = 62398, + [SMALL_STATE(1104)] = 62423, + [SMALL_STATE(1105)] = 62442, + [SMALL_STATE(1106)] = 62461, + [SMALL_STATE(1107)] = 62484, + [SMALL_STATE(1108)] = 62509, + [SMALL_STATE(1109)] = 62532, + [SMALL_STATE(1110)] = 62553, + [SMALL_STATE(1111)] = 62567, + [SMALL_STATE(1112)] = 62581, + [SMALL_STATE(1113)] = 62599, + [SMALL_STATE(1114)] = 62617, + [SMALL_STATE(1115)] = 62631, + [SMALL_STATE(1116)] = 62649, + [SMALL_STATE(1117)] = 62663, + [SMALL_STATE(1118)] = 62679, + [SMALL_STATE(1119)] = 62699, + [SMALL_STATE(1120)] = 62721, + [SMALL_STATE(1121)] = 62741, + [SMALL_STATE(1122)] = 62761, + [SMALL_STATE(1123)] = 62779, + [SMALL_STATE(1124)] = 62797, + [SMALL_STATE(1125)] = 62811, + [SMALL_STATE(1126)] = 62831, + [SMALL_STATE(1127)] = 62845, + [SMALL_STATE(1128)] = 62859, + [SMALL_STATE(1129)] = 62873, + [SMALL_STATE(1130)] = 62887, + [SMALL_STATE(1131)] = 62901, + [SMALL_STATE(1132)] = 62915, + [SMALL_STATE(1133)] = 62929, + [SMALL_STATE(1134)] = 62943, + [SMALL_STATE(1135)] = 62957, + [SMALL_STATE(1136)] = 62975, + [SMALL_STATE(1137)] = 62989, + [SMALL_STATE(1138)] = 63015, + [SMALL_STATE(1139)] = 63029, + [SMALL_STATE(1140)] = 63049, + [SMALL_STATE(1141)] = 63063, + [SMALL_STATE(1142)] = 63077, + [SMALL_STATE(1143)] = 63091, + [SMALL_STATE(1144)] = 63105, + [SMALL_STATE(1145)] = 63125, + [SMALL_STATE(1146)] = 63139, + [SMALL_STATE(1147)] = 63163, + [SMALL_STATE(1148)] = 63179, + [SMALL_STATE(1149)] = 63193, + [SMALL_STATE(1150)] = 63215, + [SMALL_STATE(1151)] = 63229, + [SMALL_STATE(1152)] = 63243, + [SMALL_STATE(1153)] = 63261, + [SMALL_STATE(1154)] = 63279, + [SMALL_STATE(1155)] = 63299, + [SMALL_STATE(1156)] = 63317, + [SMALL_STATE(1157)] = 63333, + [SMALL_STATE(1158)] = 63351, + [SMALL_STATE(1159)] = 63365, + [SMALL_STATE(1160)] = 63385, + [SMALL_STATE(1161)] = 63407, + [SMALL_STATE(1162)] = 63427, + [SMALL_STATE(1163)] = 63447, + [SMALL_STATE(1164)] = 63467, + [SMALL_STATE(1165)] = 63485, + [SMALL_STATE(1166)] = 63501, + [SMALL_STATE(1167)] = 63521, + [SMALL_STATE(1168)] = 63539, + [SMALL_STATE(1169)] = 63559, + [SMALL_STATE(1170)] = 63579, + [SMALL_STATE(1171)] = 63599, + [SMALL_STATE(1172)] = 63617, + [SMALL_STATE(1173)] = 63641, + [SMALL_STATE(1174)] = 63659, + [SMALL_STATE(1175)] = 63677, + [SMALL_STATE(1176)] = 63701, + [SMALL_STATE(1177)] = 63715, + [SMALL_STATE(1178)] = 63740, + [SMALL_STATE(1179)] = 63753, + [SMALL_STATE(1180)] = 63772, + [SMALL_STATE(1181)] = 63797, + [SMALL_STATE(1182)] = 63820, + [SMALL_STATE(1183)] = 63839, + [SMALL_STATE(1184)] = 63860, + [SMALL_STATE(1185)] = 63885, + [SMALL_STATE(1186)] = 63910, + [SMALL_STATE(1187)] = 63935, + [SMALL_STATE(1188)] = 63960, + [SMALL_STATE(1189)] = 63979, + [SMALL_STATE(1190)] = 63996, + [SMALL_STATE(1191)] = 64011, + [SMALL_STATE(1192)] = 64034, + [SMALL_STATE(1193)] = 64055, + [SMALL_STATE(1194)] = 64080, + [SMALL_STATE(1195)] = 64105, + [SMALL_STATE(1196)] = 64126, + [SMALL_STATE(1197)] = 64151, + [SMALL_STATE(1198)] = 64170, + [SMALL_STATE(1199)] = 64183, + [SMALL_STATE(1200)] = 64202, + [SMALL_STATE(1201)] = 64221, + [SMALL_STATE(1202)] = 64238, + [SMALL_STATE(1203)] = 64263, + [SMALL_STATE(1204)] = 64288, + [SMALL_STATE(1205)] = 64313, + [SMALL_STATE(1206)] = 64326, + [SMALL_STATE(1207)] = 64351, + [SMALL_STATE(1208)] = 64376, + [SMALL_STATE(1209)] = 64401, + [SMALL_STATE(1210)] = 64426, + [SMALL_STATE(1211)] = 64449, + [SMALL_STATE(1212)] = 64474, + [SMALL_STATE(1213)] = 64499, + [SMALL_STATE(1214)] = 64522, + [SMALL_STATE(1215)] = 64539, + [SMALL_STATE(1216)] = 64560, + [SMALL_STATE(1217)] = 64581, + [SMALL_STATE(1218)] = 64606, + [SMALL_STATE(1219)] = 64631, + [SMALL_STATE(1220)] = 64650, + [SMALL_STATE(1221)] = 64669, + [SMALL_STATE(1222)] = 64688, + [SMALL_STATE(1223)] = 64701, + [SMALL_STATE(1224)] = 64724, + [SMALL_STATE(1225)] = 64743, + [SMALL_STATE(1226)] = 64766, + [SMALL_STATE(1227)] = 64791, + [SMALL_STATE(1228)] = 64816, + [SMALL_STATE(1229)] = 64841, + [SMALL_STATE(1230)] = 64866, + [SMALL_STATE(1231)] = 64891, + [SMALL_STATE(1232)] = 64910, + [SMALL_STATE(1233)] = 64935, + [SMALL_STATE(1234)] = 64948, + [SMALL_STATE(1235)] = 64967, + [SMALL_STATE(1236)] = 64990, + [SMALL_STATE(1237)] = 65015, + [SMALL_STATE(1238)] = 65028, + [SMALL_STATE(1239)] = 65047, + [SMALL_STATE(1240)] = 65070, + [SMALL_STATE(1241)] = 65085, + [SMALL_STATE(1242)] = 65108, + [SMALL_STATE(1243)] = 65124, + [SMALL_STATE(1244)] = 65140, + [SMALL_STATE(1245)] = 65160, + [SMALL_STATE(1246)] = 65176, + [SMALL_STATE(1247)] = 65196, + [SMALL_STATE(1248)] = 65214, + [SMALL_STATE(1249)] = 65228, + [SMALL_STATE(1250)] = 65244, + [SMALL_STATE(1251)] = 65266, + [SMALL_STATE(1252)] = 65282, + [SMALL_STATE(1253)] = 65296, + [SMALL_STATE(1254)] = 65318, + [SMALL_STATE(1255)] = 65338, + [SMALL_STATE(1256)] = 65356, + [SMALL_STATE(1257)] = 65372, + [SMALL_STATE(1258)] = 65388, + [SMALL_STATE(1259)] = 65410, + [SMALL_STATE(1260)] = 65424, + [SMALL_STATE(1261)] = 65438, + [SMALL_STATE(1262)] = 65456, + [SMALL_STATE(1263)] = 65472, + [SMALL_STATE(1264)] = 65484, + [SMALL_STATE(1265)] = 65504, + [SMALL_STATE(1266)] = 65526, + [SMALL_STATE(1267)] = 65544, + [SMALL_STATE(1268)] = 65562, + [SMALL_STATE(1269)] = 65580, + [SMALL_STATE(1270)] = 65600, + [SMALL_STATE(1271)] = 65616, + [SMALL_STATE(1272)] = 65634, + [SMALL_STATE(1273)] = 65650, + [SMALL_STATE(1274)] = 65666, + [SMALL_STATE(1275)] = 65682, + [SMALL_STATE(1276)] = 65696, + [SMALL_STATE(1277)] = 65718, + [SMALL_STATE(1278)] = 65740, + [SMALL_STATE(1279)] = 65758, + [SMALL_STATE(1280)] = 65780, + [SMALL_STATE(1281)] = 65796, + [SMALL_STATE(1282)] = 65810, + [SMALL_STATE(1283)] = 65822, + [SMALL_STATE(1284)] = 65839, + [SMALL_STATE(1285)] = 65856, + [SMALL_STATE(1286)] = 65875, + [SMALL_STATE(1287)] = 65890, + [SMALL_STATE(1288)] = 65909, + [SMALL_STATE(1289)] = 65924, + [SMALL_STATE(1290)] = 65943, + [SMALL_STATE(1291)] = 65960, + [SMALL_STATE(1292)] = 65971, + [SMALL_STATE(1293)] = 65988, + [SMALL_STATE(1294)] = 65999, + [SMALL_STATE(1295)] = 66014, + [SMALL_STATE(1296)] = 66031, + [SMALL_STATE(1297)] = 66050, + [SMALL_STATE(1298)] = 66067, + [SMALL_STATE(1299)] = 66084, + [SMALL_STATE(1300)] = 66099, + [SMALL_STATE(1301)] = 66116, + [SMALL_STATE(1302)] = 66127, + [SMALL_STATE(1303)] = 66144, + [SMALL_STATE(1304)] = 66161, + [SMALL_STATE(1305)] = 66178, + [SMALL_STATE(1306)] = 66197, + [SMALL_STATE(1307)] = 66216, + [SMALL_STATE(1308)] = 66227, + [SMALL_STATE(1309)] = 66242, + [SMALL_STATE(1310)] = 66257, + [SMALL_STATE(1311)] = 66272, + [SMALL_STATE(1312)] = 66287, + [SMALL_STATE(1313)] = 66298, + [SMALL_STATE(1314)] = 66315, + [SMALL_STATE(1315)] = 66334, + [SMALL_STATE(1316)] = 66353, + [SMALL_STATE(1317)] = 66370, + [SMALL_STATE(1318)] = 66387, + [SMALL_STATE(1319)] = 66404, + [SMALL_STATE(1320)] = 66421, + [SMALL_STATE(1321)] = 66438, + [SMALL_STATE(1322)] = 66455, + [SMALL_STATE(1323)] = 66471, + [SMALL_STATE(1324)] = 66485, + [SMALL_STATE(1325)] = 66499, + [SMALL_STATE(1326)] = 66515, + [SMALL_STATE(1327)] = 66531, + [SMALL_STATE(1328)] = 66545, + [SMALL_STATE(1329)] = 66561, + [SMALL_STATE(1330)] = 66573, + [SMALL_STATE(1331)] = 66589, + [SMALL_STATE(1332)] = 66605, + [SMALL_STATE(1333)] = 66619, + [SMALL_STATE(1334)] = 66631, + [SMALL_STATE(1335)] = 66645, + [SMALL_STATE(1336)] = 66659, + [SMALL_STATE(1337)] = 66673, + [SMALL_STATE(1338)] = 66689, + [SMALL_STATE(1339)] = 66705, + [SMALL_STATE(1340)] = 66719, + [SMALL_STATE(1341)] = 66733, + [SMALL_STATE(1342)] = 66749, + [SMALL_STATE(1343)] = 66765, + [SMALL_STATE(1344)] = 66779, + [SMALL_STATE(1345)] = 66789, + [SMALL_STATE(1346)] = 66805, + [SMALL_STATE(1347)] = 66821, + [SMALL_STATE(1348)] = 66837, + [SMALL_STATE(1349)] = 66851, + [SMALL_STATE(1350)] = 66861, + [SMALL_STATE(1351)] = 66877, + [SMALL_STATE(1352)] = 66893, + [SMALL_STATE(1353)] = 66907, + [SMALL_STATE(1354)] = 66923, + [SMALL_STATE(1355)] = 66933, + [SMALL_STATE(1356)] = 66947, + [SMALL_STATE(1357)] = 66963, + [SMALL_STATE(1358)] = 66979, + [SMALL_STATE(1359)] = 66989, + [SMALL_STATE(1360)] = 67005, + [SMALL_STATE(1361)] = 67019, + [SMALL_STATE(1362)] = 67035, + [SMALL_STATE(1363)] = 67051, + [SMALL_STATE(1364)] = 67067, + [SMALL_STATE(1365)] = 67081, + [SMALL_STATE(1366)] = 67097, + [SMALL_STATE(1367)] = 67111, + [SMALL_STATE(1368)] = 67127, + [SMALL_STATE(1369)] = 67141, + [SMALL_STATE(1370)] = 67155, + [SMALL_STATE(1371)] = 67171, + [SMALL_STATE(1372)] = 67187, + [SMALL_STATE(1373)] = 67201, + [SMALL_STATE(1374)] = 67215, + [SMALL_STATE(1375)] = 67229, + [SMALL_STATE(1376)] = 67243, + [SMALL_STATE(1377)] = 67259, + [SMALL_STATE(1378)] = 67275, + [SMALL_STATE(1379)] = 67291, + [SMALL_STATE(1380)] = 67305, + [SMALL_STATE(1381)] = 67319, + [SMALL_STATE(1382)] = 67335, + [SMALL_STATE(1383)] = 67349, + [SMALL_STATE(1384)] = 67363, + [SMALL_STATE(1385)] = 67379, + [SMALL_STATE(1386)] = 67395, + [SMALL_STATE(1387)] = 67411, + [SMALL_STATE(1388)] = 67427, + [SMALL_STATE(1389)] = 67441, + [SMALL_STATE(1390)] = 67455, + [SMALL_STATE(1391)] = 67469, + [SMALL_STATE(1392)] = 67479, + [SMALL_STATE(1393)] = 67493, + [SMALL_STATE(1394)] = 67503, + [SMALL_STATE(1395)] = 67517, + [SMALL_STATE(1396)] = 67533, + [SMALL_STATE(1397)] = 67549, + [SMALL_STATE(1398)] = 67565, + [SMALL_STATE(1399)] = 67581, + [SMALL_STATE(1400)] = 67597, + [SMALL_STATE(1401)] = 67611, + [SMALL_STATE(1402)] = 67625, + [SMALL_STATE(1403)] = 67641, + [SMALL_STATE(1404)] = 67657, + [SMALL_STATE(1405)] = 67671, + [SMALL_STATE(1406)] = 67684, + [SMALL_STATE(1407)] = 67697, + [SMALL_STATE(1408)] = 67710, + [SMALL_STATE(1409)] = 67721, + [SMALL_STATE(1410)] = 67734, + [SMALL_STATE(1411)] = 67743, + [SMALL_STATE(1412)] = 67754, + [SMALL_STATE(1413)] = 67767, + [SMALL_STATE(1414)] = 67780, + [SMALL_STATE(1415)] = 67793, + [SMALL_STATE(1416)] = 67806, + [SMALL_STATE(1417)] = 67819, + [SMALL_STATE(1418)] = 67828, + [SMALL_STATE(1419)] = 67841, + [SMALL_STATE(1420)] = 67854, + [SMALL_STATE(1421)] = 67867, + [SMALL_STATE(1422)] = 67880, + [SMALL_STATE(1423)] = 67889, + [SMALL_STATE(1424)] = 67902, + [SMALL_STATE(1425)] = 67915, + [SMALL_STATE(1426)] = 67924, + [SMALL_STATE(1427)] = 67937, + [SMALL_STATE(1428)] = 67950, + [SMALL_STATE(1429)] = 67959, + [SMALL_STATE(1430)] = 67972, + [SMALL_STATE(1431)] = 67985, + [SMALL_STATE(1432)] = 67996, + [SMALL_STATE(1433)] = 68009, + [SMALL_STATE(1434)] = 68022, + [SMALL_STATE(1435)] = 68035, + [SMALL_STATE(1436)] = 68048, + [SMALL_STATE(1437)] = 68059, + [SMALL_STATE(1438)] = 68068, + [SMALL_STATE(1439)] = 68079, + [SMALL_STATE(1440)] = 68092, + [SMALL_STATE(1441)] = 68105, + [SMALL_STATE(1442)] = 68118, + [SMALL_STATE(1443)] = 68127, + [SMALL_STATE(1444)] = 68140, + [SMALL_STATE(1445)] = 68153, + [SMALL_STATE(1446)] = 68166, + [SMALL_STATE(1447)] = 68177, + [SMALL_STATE(1448)] = 68190, + [SMALL_STATE(1449)] = 68203, + [SMALL_STATE(1450)] = 68216, + [SMALL_STATE(1451)] = 68229, + [SMALL_STATE(1452)] = 68242, + [SMALL_STATE(1453)] = 68255, + [SMALL_STATE(1454)] = 68268, + [SMALL_STATE(1455)] = 68281, + [SMALL_STATE(1456)] = 68294, + [SMALL_STATE(1457)] = 68307, + [SMALL_STATE(1458)] = 68320, + [SMALL_STATE(1459)] = 68333, + [SMALL_STATE(1460)] = 68346, + [SMALL_STATE(1461)] = 68359, + [SMALL_STATE(1462)] = 68372, + [SMALL_STATE(1463)] = 68385, + [SMALL_STATE(1464)] = 68396, + [SMALL_STATE(1465)] = 68409, + [SMALL_STATE(1466)] = 68422, + [SMALL_STATE(1467)] = 68435, + [SMALL_STATE(1468)] = 68448, + [SMALL_STATE(1469)] = 68461, + [SMALL_STATE(1470)] = 68474, + [SMALL_STATE(1471)] = 68487, + [SMALL_STATE(1472)] = 68500, + [SMALL_STATE(1473)] = 68513, + [SMALL_STATE(1474)] = 68526, + [SMALL_STATE(1475)] = 68539, + [SMALL_STATE(1476)] = 68552, + [SMALL_STATE(1477)] = 68565, + [SMALL_STATE(1478)] = 68578, + [SMALL_STATE(1479)] = 68591, + [SMALL_STATE(1480)] = 68604, + [SMALL_STATE(1481)] = 68617, + [SMALL_STATE(1482)] = 68630, + [SMALL_STATE(1483)] = 68643, + [SMALL_STATE(1484)] = 68656, + [SMALL_STATE(1485)] = 68669, + [SMALL_STATE(1486)] = 68678, + [SMALL_STATE(1487)] = 68691, + [SMALL_STATE(1488)] = 68704, + [SMALL_STATE(1489)] = 68717, + [SMALL_STATE(1490)] = 68730, + [SMALL_STATE(1491)] = 68743, + [SMALL_STATE(1492)] = 68756, + [SMALL_STATE(1493)] = 68769, + [SMALL_STATE(1494)] = 68782, + [SMALL_STATE(1495)] = 68791, + [SMALL_STATE(1496)] = 68804, + [SMALL_STATE(1497)] = 68817, + [SMALL_STATE(1498)] = 68830, + [SMALL_STATE(1499)] = 68843, + [SMALL_STATE(1500)] = 68854, + [SMALL_STATE(1501)] = 68867, + [SMALL_STATE(1502)] = 68880, + [SMALL_STATE(1503)] = 68893, + [SMALL_STATE(1504)] = 68906, + [SMALL_STATE(1505)] = 68919, + [SMALL_STATE(1506)] = 68932, + [SMALL_STATE(1507)] = 68945, + [SMALL_STATE(1508)] = 68956, + [SMALL_STATE(1509)] = 68967, + [SMALL_STATE(1510)] = 68976, + [SMALL_STATE(1511)] = 68985, + [SMALL_STATE(1512)] = 68998, + [SMALL_STATE(1513)] = 69007, + [SMALL_STATE(1514)] = 69020, + [SMALL_STATE(1515)] = 69033, + [SMALL_STATE(1516)] = 69046, + [SMALL_STATE(1517)] = 69057, + [SMALL_STATE(1518)] = 69068, + [SMALL_STATE(1519)] = 69081, + [SMALL_STATE(1520)] = 69094, + [SMALL_STATE(1521)] = 69107, + [SMALL_STATE(1522)] = 69120, + [SMALL_STATE(1523)] = 69129, + [SMALL_STATE(1524)] = 69142, + [SMALL_STATE(1525)] = 69151, + [SMALL_STATE(1526)] = 69164, + [SMALL_STATE(1527)] = 69177, + [SMALL_STATE(1528)] = 69190, + [SMALL_STATE(1529)] = 69203, + [SMALL_STATE(1530)] = 69212, + [SMALL_STATE(1531)] = 69225, + [SMALL_STATE(1532)] = 69238, + [SMALL_STATE(1533)] = 69251, + [SMALL_STATE(1534)] = 69259, + [SMALL_STATE(1535)] = 69267, + [SMALL_STATE(1536)] = 69275, + [SMALL_STATE(1537)] = 69283, + [SMALL_STATE(1538)] = 69293, + [SMALL_STATE(1539)] = 69303, + [SMALL_STATE(1540)] = 69311, + [SMALL_STATE(1541)] = 69319, + [SMALL_STATE(1542)] = 69329, + [SMALL_STATE(1543)] = 69337, + [SMALL_STATE(1544)] = 69347, + [SMALL_STATE(1545)] = 69357, + [SMALL_STATE(1546)] = 69365, + [SMALL_STATE(1547)] = 69375, + [SMALL_STATE(1548)] = 69385, + [SMALL_STATE(1549)] = 69395, + [SMALL_STATE(1550)] = 69403, + [SMALL_STATE(1551)] = 69411, + [SMALL_STATE(1552)] = 69421, + [SMALL_STATE(1553)] = 69429, + [SMALL_STATE(1554)] = 69439, + [SMALL_STATE(1555)] = 69447, + [SMALL_STATE(1556)] = 69457, + [SMALL_STATE(1557)] = 69467, + [SMALL_STATE(1558)] = 69475, + [SMALL_STATE(1559)] = 69483, + [SMALL_STATE(1560)] = 69491, + [SMALL_STATE(1561)] = 69501, + [SMALL_STATE(1562)] = 69509, + [SMALL_STATE(1563)] = 69517, + [SMALL_STATE(1564)] = 69525, + [SMALL_STATE(1565)] = 69535, + [SMALL_STATE(1566)] = 69543, + [SMALL_STATE(1567)] = 69551, + [SMALL_STATE(1568)] = 69559, + [SMALL_STATE(1569)] = 69569, + [SMALL_STATE(1570)] = 69577, + [SMALL_STATE(1571)] = 69585, + [SMALL_STATE(1572)] = 69593, + [SMALL_STATE(1573)] = 69603, + [SMALL_STATE(1574)] = 69613, + [SMALL_STATE(1575)] = 69623, + [SMALL_STATE(1576)] = 69631, + [SMALL_STATE(1577)] = 69641, + [SMALL_STATE(1578)] = 69649, + [SMALL_STATE(1579)] = 69657, + [SMALL_STATE(1580)] = 69665, + [SMALL_STATE(1581)] = 69673, + [SMALL_STATE(1582)] = 69681, + [SMALL_STATE(1583)] = 69689, + [SMALL_STATE(1584)] = 69697, + [SMALL_STATE(1585)] = 69705, + [SMALL_STATE(1586)] = 69713, + [SMALL_STATE(1587)] = 69721, + [SMALL_STATE(1588)] = 69731, + [SMALL_STATE(1589)] = 69741, + [SMALL_STATE(1590)] = 69749, + [SMALL_STATE(1591)] = 69759, + [SMALL_STATE(1592)] = 69767, + [SMALL_STATE(1593)] = 69775, + [SMALL_STATE(1594)] = 69785, + [SMALL_STATE(1595)] = 69795, + [SMALL_STATE(1596)] = 69805, + [SMALL_STATE(1597)] = 69813, + [SMALL_STATE(1598)] = 69823, + [SMALL_STATE(1599)] = 69831, + [SMALL_STATE(1600)] = 69841, + [SMALL_STATE(1601)] = 69849, + [SMALL_STATE(1602)] = 69859, + [SMALL_STATE(1603)] = 69869, + [SMALL_STATE(1604)] = 69877, + [SMALL_STATE(1605)] = 69887, + [SMALL_STATE(1606)] = 69895, + [SMALL_STATE(1607)] = 69903, + [SMALL_STATE(1608)] = 69911, + [SMALL_STATE(1609)] = 69919, + [SMALL_STATE(1610)] = 69927, + [SMALL_STATE(1611)] = 69935, + [SMALL_STATE(1612)] = 69943, + [SMALL_STATE(1613)] = 69953, + [SMALL_STATE(1614)] = 69960, + [SMALL_STATE(1615)] = 69967, + [SMALL_STATE(1616)] = 69974, + [SMALL_STATE(1617)] = 69981, + [SMALL_STATE(1618)] = 69988, + [SMALL_STATE(1619)] = 69995, + [SMALL_STATE(1620)] = 70002, + [SMALL_STATE(1621)] = 70009, + [SMALL_STATE(1622)] = 70016, + [SMALL_STATE(1623)] = 70023, + [SMALL_STATE(1624)] = 70030, + [SMALL_STATE(1625)] = 70037, + [SMALL_STATE(1626)] = 70044, + [SMALL_STATE(1627)] = 70051, + [SMALL_STATE(1628)] = 70058, + [SMALL_STATE(1629)] = 70065, + [SMALL_STATE(1630)] = 70072, + [SMALL_STATE(1631)] = 70079, + [SMALL_STATE(1632)] = 70086, + [SMALL_STATE(1633)] = 70093, + [SMALL_STATE(1634)] = 70100, + [SMALL_STATE(1635)] = 70107, + [SMALL_STATE(1636)] = 70114, + [SMALL_STATE(1637)] = 70121, + [SMALL_STATE(1638)] = 70128, + [SMALL_STATE(1639)] = 70135, + [SMALL_STATE(1640)] = 70142, + [SMALL_STATE(1641)] = 70149, + [SMALL_STATE(1642)] = 70156, + [SMALL_STATE(1643)] = 70163, + [SMALL_STATE(1644)] = 70170, + [SMALL_STATE(1645)] = 70177, + [SMALL_STATE(1646)] = 70184, + [SMALL_STATE(1647)] = 70191, + [SMALL_STATE(1648)] = 70198, + [SMALL_STATE(1649)] = 70205, + [SMALL_STATE(1650)] = 70212, + [SMALL_STATE(1651)] = 70219, + [SMALL_STATE(1652)] = 70226, + [SMALL_STATE(1653)] = 70233, + [SMALL_STATE(1654)] = 70240, + [SMALL_STATE(1655)] = 70247, + [SMALL_STATE(1656)] = 70254, + [SMALL_STATE(1657)] = 70261, + [SMALL_STATE(1658)] = 70268, + [SMALL_STATE(1659)] = 70275, + [SMALL_STATE(1660)] = 70282, + [SMALL_STATE(1661)] = 70289, + [SMALL_STATE(1662)] = 70296, + [SMALL_STATE(1663)] = 70303, + [SMALL_STATE(1664)] = 70310, + [SMALL_STATE(1665)] = 70317, + [SMALL_STATE(1666)] = 70324, + [SMALL_STATE(1667)] = 70331, + [SMALL_STATE(1668)] = 70338, + [SMALL_STATE(1669)] = 70345, + [SMALL_STATE(1670)] = 70352, + [SMALL_STATE(1671)] = 70359, + [SMALL_STATE(1672)] = 70366, + [SMALL_STATE(1673)] = 70373, + [SMALL_STATE(1674)] = 70380, + [SMALL_STATE(1675)] = 70387, + [SMALL_STATE(1676)] = 70394, + [SMALL_STATE(1677)] = 70401, + [SMALL_STATE(1678)] = 70408, + [SMALL_STATE(1679)] = 70415, + [SMALL_STATE(1680)] = 70422, + [SMALL_STATE(1681)] = 70429, + [SMALL_STATE(1682)] = 70436, + [SMALL_STATE(1683)] = 70443, + [SMALL_STATE(1684)] = 70450, + [SMALL_STATE(1685)] = 70457, + [SMALL_STATE(1686)] = 70464, + [SMALL_STATE(1687)] = 70471, + [SMALL_STATE(1688)] = 70478, + [SMALL_STATE(1689)] = 70485, + [SMALL_STATE(1690)] = 70492, + [SMALL_STATE(1691)] = 70499, + [SMALL_STATE(1692)] = 70506, + [SMALL_STATE(1693)] = 70513, + [SMALL_STATE(1694)] = 70520, + [SMALL_STATE(1695)] = 70527, + [SMALL_STATE(1696)] = 70534, + [SMALL_STATE(1697)] = 70541, + [SMALL_STATE(1698)] = 70548, + [SMALL_STATE(1699)] = 70555, + [SMALL_STATE(1700)] = 70562, + [SMALL_STATE(1701)] = 70569, + [SMALL_STATE(1702)] = 70576, + [SMALL_STATE(1703)] = 70583, + [SMALL_STATE(1704)] = 70590, + [SMALL_STATE(1705)] = 70597, + [SMALL_STATE(1706)] = 70604, + [SMALL_STATE(1707)] = 70611, + [SMALL_STATE(1708)] = 70618, + [SMALL_STATE(1709)] = 70625, + [SMALL_STATE(1710)] = 70632, + [SMALL_STATE(1711)] = 70639, + [SMALL_STATE(1712)] = 70646, + [SMALL_STATE(1713)] = 70653, + [SMALL_STATE(1714)] = 70660, + [SMALL_STATE(1715)] = 70667, + [SMALL_STATE(1716)] = 70674, + [SMALL_STATE(1717)] = 70681, + [SMALL_STATE(1718)] = 70688, + [SMALL_STATE(1719)] = 70695, + [SMALL_STATE(1720)] = 70702, + [SMALL_STATE(1721)] = 70709, + [SMALL_STATE(1722)] = 70716, + [SMALL_STATE(1723)] = 70723, + [SMALL_STATE(1724)] = 70730, + [SMALL_STATE(1725)] = 70737, + [SMALL_STATE(1726)] = 70744, + [SMALL_STATE(1727)] = 70751, + [SMALL_STATE(1728)] = 70758, + [SMALL_STATE(1729)] = 70765, + [SMALL_STATE(1730)] = 70772, + [SMALL_STATE(1731)] = 70779, + [SMALL_STATE(1732)] = 70786, + [SMALL_STATE(1733)] = 70793, + [SMALL_STATE(1734)] = 70800, + [SMALL_STATE(1735)] = 70807, + [SMALL_STATE(1736)] = 70814, + [SMALL_STATE(1737)] = 70821, + [SMALL_STATE(1738)] = 70828, + [SMALL_STATE(1739)] = 70835, + [SMALL_STATE(1740)] = 70842, + [SMALL_STATE(1741)] = 70849, + [SMALL_STATE(1742)] = 70856, + [SMALL_STATE(1743)] = 70863, + [SMALL_STATE(1744)] = 70870, + [SMALL_STATE(1745)] = 70877, + [SMALL_STATE(1746)] = 70884, + [SMALL_STATE(1747)] = 70891, + [SMALL_STATE(1748)] = 70898, + [SMALL_STATE(1749)] = 70905, + [SMALL_STATE(1750)] = 70912, + [SMALL_STATE(1751)] = 70919, + [SMALL_STATE(1752)] = 70926, + [SMALL_STATE(1753)] = 70933, + [SMALL_STATE(1754)] = 70940, }; static const TSParseActionEntry ts_parse_actions[] = { @@ -82371,1687 +84025,1704 @@ static const TSParseActionEntry ts_parse_actions[] = { [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 0, 0, 0), - [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(462), - [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1321), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1201), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), - [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(384), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(68), - [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(406), - [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(217), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(244), - [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), - [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1523), - [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1525), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1531), - [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(385), - [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(324), - [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(508), - [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(407), - [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1712), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(288), - [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), - [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(676), - [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), - [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), - [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1619), - [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1585), - [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1648), - [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(367), - [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(458), - [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1629), - [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), - [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(343), - [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1016), - [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(174), - [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), - [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(908), - [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), - [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1035), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1037), - [85] = {.entry = {.count = 1, .reusable = false}}, SHIFT(423), - [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(338), - [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(493), - [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(424), - [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1688), - [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(304), - [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), - [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1713), - [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1691), - [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), - [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1521), - [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), - [109] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), - [111] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(462), - [114] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1321), - [117] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1201), - [120] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(162), - [123] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(384), - [126] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(68), - [129] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(406), - [132] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(217), - [135] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(244), - [138] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(184), - [141] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1523), - [144] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1525), - [147] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1531), - [150] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(385), - [153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(324), - [156] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(508), - [159] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(407), - [162] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1712), - [165] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(288), - [168] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(67), - [171] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(676), - [174] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(157), - [177] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(164), - [180] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(378), - [183] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1619), - [186] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1585), - [189] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1648), - [192] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(367), - [195] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(458), - [198] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1629), - [201] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(342), - [204] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(343), - [207] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1016), - [210] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(174), - [213] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(908), - [216] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(908), - [219] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(134), - [222] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1035), - [225] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1037), - [228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1536), - [230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1, 0, 0), - [232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), - [234] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(423), - [237] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(338), - [240] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(493), - [243] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(424), - [246] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1688), - [249] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(304), - [252] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(66), - [255] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1713), - [258] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1691), - [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), - [263] = {.entry = {.count = 1, .reusable = false}}, SHIFT(774), - [265] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), - [267] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(194), - [270] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 1), REDUCE(sym_primary_expression, 1, 0, 1), - [273] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(370), - [276] = {.entry = {.count = 1, .reusable = false}}, SHIFT(773), - [278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), - [280] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 1), - [282] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(675), - [285] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(197), - [288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), - [290] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(378), - [293] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(391), - [296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(675), - [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), - [300] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1015), - [302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 1), - [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(724), - [306] = {.entry = {.count = 1, .reusable = false}}, SHIFT(724), - [308] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), - [310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1044), - [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1045), - [314] = {.entry = {.count = 1, .reusable = false}}, SHIFT(853), - [316] = {.entry = {.count = 1, .reusable = false}}, SHIFT(826), - [318] = {.entry = {.count = 1, .reusable = false}}, SHIFT(365), - [320] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), - [322] = {.entry = {.count = 1, .reusable = false}}, SHIFT(465), - [324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1171), - [326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), - [330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(550), - [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(581), - [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), - [342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(606), - [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(482), - [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319), - [354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(489), - [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(554), - [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(557), - [366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(454), - [370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(559), - [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(516), - [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(520), - [382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(564), - [386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(566), - [390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(567), - [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(523), - [398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(571), - [402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(491), - [406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), - [408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(437), - [410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), - [412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(573), - [414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(546), - [418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(577), - [422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495), - [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(579), - [430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(541), - [434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), - [438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(480), - [442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), - [446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(584), - [450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527), - [454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(439), - [458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(485), - [462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(504), - [466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(589), - [470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), - [474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(488), - [478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(496), - [482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(531), - [486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(593), - [490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(608), - [494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), - [498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(611), - [502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(464), - [506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(506), - [510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(599), - [514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(537), - [518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(602), - [522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(444), - [526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(451), - [530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(613), - [534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(445), - [538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), - [542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [544] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1187), - [546] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [548] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), - [550] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [552] = {.entry = {.count = 1, .reusable = true}}, SHIFT(481), - [554] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [556] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), - [558] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318), - [560] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1515), - [562] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1580), - [564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), - [566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), - [568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), - [570] = {.entry = {.count = 1, .reusable = false}}, SHIFT(926), - [572] = {.entry = {.count = 1, .reusable = false}}, SHIFT(676), - [574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), - [576] = {.entry = {.count = 1, .reusable = false}}, SHIFT(149), - [578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), - [580] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), REDUCE(sym_list_splat_pattern, 2, 0, 8), - [583] = {.entry = {.count = 1, .reusable = false}}, SHIFT(723), - [585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), - [587] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 8), - [589] = {.entry = {.count = 1, .reusable = false}}, SHIFT(675), - [591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), - [593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 8), - [595] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), - [597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), - [599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), - [601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(657), - [603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), - [605] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), - [607] = {.entry = {.count = 1, .reusable = false}}, SHIFT(924), - [609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), - [611] = {.entry = {.count = 1, .reusable = false}}, SHIFT(938), - [613] = {.entry = {.count = 1, .reusable = false}}, SHIFT(392), - [615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679), - [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), - [619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), - [621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), - [623] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), - [625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1059), - [627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1056), - [629] = {.entry = {.count = 1, .reusable = false}}, SHIFT(953), - [631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229), - [633] = {.entry = {.count = 1, .reusable = false}}, SHIFT(963), - [635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), - [637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), - [639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), - [641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), - [643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(953), - [645] = {.entry = {.count = 1, .reusable = false}}, SHIFT(150), - [647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1050), - [649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1051), - [651] = {.entry = {.count = 1, .reusable = false}}, SHIFT(372), - [653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), - [655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), - [657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(692), - [659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), - [661] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), - [663] = {.entry = {.count = 1, .reusable = false}}, SHIFT(849), - [665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), - [667] = {.entry = {.count = 1, .reusable = false}}, SHIFT(662), - [669] = {.entry = {.count = 1, .reusable = false}}, SHIFT(855), - [671] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 7), - [673] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2, 0, 7), - [675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), - [677] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), - [679] = {.entry = {.count = 1, .reusable = false}}, SHIFT(858), - [681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), - [685] = {.entry = {.count = 1, .reusable = false}}, SHIFT(864), - [687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), - [689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(513), - [691] = {.entry = {.count = 1, .reusable = false}}, SHIFT(340), - [693] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1014), - [695] = {.entry = {.count = 1, .reusable = false}}, SHIFT(168), - [697] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), - [699] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3, 0, 16), - [701] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3, 0, 16), - [703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), - [705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), - [707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), - [709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(502), - [711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(857), - [713] = {.entry = {.count = 1, .reusable = false}}, SHIFT(842), - [715] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), - [717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1678), - [719] = {.entry = {.count = 1, .reusable = false}}, SHIFT(370), - [721] = {.entry = {.count = 1, .reusable = false}}, SHIFT(863), - [723] = {.entry = {.count = 1, .reusable = true}}, SHIFT(942), - [725] = {.entry = {.count = 1, .reusable = false}}, SHIFT(416), - [727] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1018), - [729] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), - [731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1683), - [733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(952), - [735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1665), - [737] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715), - [739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1596), - [741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(939), - [743] = {.entry = {.count = 1, .reusable = false}}, SHIFT(362), - [745] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 1, 0, 0), - [747] = {.entry = {.count = 1, .reusable = false}}, SHIFT(391), - [749] = {.entry = {.count = 1, .reusable = false}}, SHIFT(865), - [751] = {.entry = {.count = 1, .reusable = false}}, SHIFT(418), - [753] = {.entry = {.count = 1, .reusable = false}}, SHIFT(840), - [755] = {.entry = {.count = 1, .reusable = false}}, SHIFT(403), - [757] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1020), - [759] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), - [761] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 7), - [763] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3, 0, 16), - [765] = {.entry = {.count = 1, .reusable = false}}, SHIFT(169), - [767] = {.entry = {.count = 1, .reusable = false}}, SHIFT(375), - [769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), - [771] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 24), - [773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), - [775] = {.entry = {.count = 1, .reusable = false}}, SHIFT(852), - [777] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), - [779] = {.entry = {.count = 1, .reusable = true}}, SHIFT(931), - [781] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1584), - [783] = {.entry = {.count = 1, .reusable = false}}, SHIFT(839), - [785] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), - [787] = {.entry = {.count = 1, .reusable = false}}, SHIFT(973), - [789] = {.entry = {.count = 1, .reusable = true}}, SHIFT(699), - [791] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1694), - [793] = {.entry = {.count = 1, .reusable = false}}, SHIFT(972), - [795] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), - [797] = {.entry = {.count = 1, .reusable = false}}, SHIFT(341), - [799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), - [801] = {.entry = {.count = 1, .reusable = false}}, SHIFT(781), - [803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(777), - [805] = {.entry = {.count = 1, .reusable = false}}, SHIFT(780), - [807] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), - [809] = {.entry = {.count = 1, .reusable = false}}, SHIFT(383), - [811] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1, 0, 0), - [813] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 3, 0, 50), - [815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), - [817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1586), - [819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(877), - [821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1635), - [823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(703), - [825] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 7, 0, 141), - [827] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 7, 0, 141), - [829] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1019), - [831] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2, 0, 7), - [833] = {.entry = {.count = 1, .reusable = false}}, SHIFT(359), - [835] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), - [837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 98), - [839] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, 0, 98), - [841] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, 0, 16), - [843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(716), - [845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(720), - [847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(764), - [849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(701), - [851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(870), - [853] = {.entry = {.count = 1, .reusable = true}}, SHIFT(704), - [855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), - [857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(867), - [859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(941), - [861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 122), - [863] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 122), - [865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 123), - [867] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 123), - [869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), - [871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(918), - [873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(712), - [875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(914), - [877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), - [879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(958), - [881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(961), - [883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(962), - [885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), - [887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1, 0, 0), - [889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713), - [891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), - [893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(866), - [895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(898), - [897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899), - [899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), - [901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(917), - [903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(871), - [905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), - [907] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 3, 0, 16), - [909] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 7), - [911] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 33), - [913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(714), - [915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(971), - [917] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), - [919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), - [921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(913), - [923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), - [925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), - [927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(893), - [929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(727), - [931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(940), - [933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), - [935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(717), - [937] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 81), - [939] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 81), - [941] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1609), - [943] = {.entry = {.count = 1, .reusable = false}}, SHIFT(311), - [945] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1606), - [947] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1704), - [949] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1646), - [951] = {.entry = {.count = 1, .reusable = false}}, SHIFT(295), - [953] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1588), - [955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 69), - [957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), - [959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), - [961] = {.entry = {.count = 1, .reusable = false}}, SHIFT(912), - [963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), - [965] = {.entry = {.count = 1, .reusable = false}}, SHIFT(911), - [967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [969] = {.entry = {.count = 1, .reusable = false}}, SHIFT(401), - [971] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1017), - [973] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), - [975] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1, 0, 0), - [977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), - [979] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, 0, 56), - [981] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, 0, 56), - [983] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1611), - [985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(337), - [987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), - [989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [991] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 10), - [993] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 28), - [995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 29), - [997] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 0), - [999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 40), - [1001] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, 0, 40), - [1003] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 68), - [1005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1620), - [1007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 0), - [1009] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 69), - [1011] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 95), - [1013] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, 0, 70), - [1015] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, 0, 70), - [1017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1630), - [1019] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, 0, 54), - [1021] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, 0, 54), - [1023] = {.entry = {.count = 1, .reusable = false}}, SHIFT(380), - [1025] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4, 0, 0), - [1027] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4, 0, 0), - [1029] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2, 0, 0), - [1031] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), - [1033] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 102), - [1035] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 102), - [1037] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2, 0, 0), - [1039] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2, 0, 0), - [1041] = {.entry = {.count = 1, .reusable = false}}, SHIFT(429), - [1043] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1, 0, 0), - [1045] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1, 0, 0), - [1047] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 76), - [1049] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 76), - [1051] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 77), - [1053] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 77), - [1055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(511), - [1057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), - [1059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1599), - [1061] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), - [1063] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), - [1065] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(295), - [1068] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), - [1070] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), - [1072] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1611), - [1075] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(311), - [1078] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1704), - [1081] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3, 0, 0), - [1083] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3, 0, 0), - [1085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(512), - [1087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), - [1089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1714), - [1091] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 100), - [1093] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 100), - [1095] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 100), SHIFT_REPEAT(380), - [1098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1055), - [1100] = {.entry = {.count = 1, .reusable = false}}, SHIFT(474), - [1102] = {.entry = {.count = 1, .reusable = false}}, SHIFT(487), - [1104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), - [1106] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 100), SHIFT_REPEAT(429), - [1109] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, 0, 158), - [1111] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, 0, 158), - [1113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, 0, 56), - [1115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, 0, 56), - [1117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 81), - [1119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 81), - [1121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 130), - [1123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 130), - [1125] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5, 0, 147), - [1127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5, 0, 147), - [1129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5, 0, 148), - [1131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5, 0, 148), - [1133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7, 0, 163), - [1135] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7, 0, 163), - [1137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, 0, 157), - [1139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, 0, 157), - [1141] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7, 0, 164), - [1143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7, 0, 164), - [1145] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 8, 0, 165), - [1147] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 8, 0, 165), - [1149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), - [1151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), - [1153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(856), - [1156] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cases, 1, 0, 0), - [1158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cases, 1, 0, 0), - [1160] = {.entry = {.count = 1, .reusable = false}}, SHIFT(862), - [1162] = {.entry = {.count = 1, .reusable = false}}, SHIFT(856), - [1164] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1498), - [1166] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(862), - [1169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3, 0, 50), - [1171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), - [1173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), - [1175] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), REDUCE(sym_primary_expression, 1, 0, 0), - [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 0), - [1180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), - [1182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 0), - [1184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), - [1186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 74), - [1188] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 74), - [1190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, 0, 54), - [1192] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, 0, 54), - [1194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 143), - [1196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 143), - [1198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 24), - [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 56), - [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 56), - [1204] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 129), - [1206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 129), - [1208] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 81), - [1210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 81), - [1212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, 0, 77), - [1214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, 0, 77), - [1216] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), REDUCE(sym_list_splat_pattern, 2, 0, 9), - [1219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(420), - [1221] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), - [1223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), - [1225] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 80), - [1227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 80), - [1229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1464), - [1231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 125), - [1233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 125), - [1235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, 0, 105), - [1237] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, 0, 105), - [1239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, 0, 55), - [1241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, 0, 55), - [1243] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, 0, 81), - [1245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, 0, 81), - [1247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, 0, 56), - [1249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, 0, 56), - [1251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 4, 0, 134), - [1253] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 4, 0, 134), - [1255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 150), - [1257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 150), - [1259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 151), - [1261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 151), - [1263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 6, 0, 159), - [1265] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 6, 0, 159), - [1267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2, 0, 0), - [1269] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), REDUCE(sym_tuple, 2, 0, 0), - [1272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2, 0, 0), - [1274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), - [1276] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2, 0, 0), - [1278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2, 0, 0), - [1280] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), REDUCE(sym_list, 2, 0, 0), - [1283] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2, 0, 0), - [1285] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), - [1287] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2, 0, 0), - [1289] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 75), - [1291] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 75), - [1293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, 0, 106), - [1295] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, 0, 106), - [1297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, 0, 56), - [1299] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, 0, 56), - [1301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 56), - [1303] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 56), - [1305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 114), - [1307] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 114), - [1309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 115), - [1311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 115), - [1313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, 0, 19), - [1315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, 0, 19), - [1317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 116), - [1319] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 116), - [1321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 117), - [1323] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 117), - [1325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 118), - [1327] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 118), - [1329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, 0, 124), - [1331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, 0, 124), - [1333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 126), - [1335] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 126), - [1337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 127), - [1339] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 127), - [1341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 128), - [1343] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 128), - [1345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4, 0, 81), - [1347] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4, 0, 81), - [1349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, 0, 81), - [1351] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, 0, 81), - [1353] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 137), - [1355] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 137), - [1357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 138), - [1359] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 138), - [1361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, 0, 139), - [1363] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 7, 0, 139), - [1365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 142), - [1367] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 142), - [1369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 144), - [1371] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 144), - [1373] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 145), - [1375] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 145), - [1377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 146), - [1379] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 146), - [1381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 82), - [1383] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 82), - [1385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, 0, 87), - [1387] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, 0, 87), - [1389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 152), - [1391] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 152), - [1393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 153), - [1395] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 153), - [1397] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, 0, 154), - [1399] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, 0, 154), - [1401] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 155), - [1403] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 155), - [1405] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 156), - [1407] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 156), - [1409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 89), - [1411] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 89), - [1413] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 161), - [1415] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 161), - [1417] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 10, 0, 162), - [1419] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 10, 0, 162), - [1421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 90), - [1423] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 90), - [1425] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, 0, 57), - [1427] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, 0, 57), - [1429] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 59), - [1431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 59), - [1433] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 60), - [1435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 60), - [1437] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, 0, 64), - [1439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, 0, 64), - [1441] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 78), - [1443] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 78), - [1445] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 79), - [1447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 79), - [1449] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 91), - [1451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 91), - [1453] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 99), - [1455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 99), - [1457] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 101), - [1459] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 101), - [1461] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, 0, 103), - [1463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, 0, 103), - [1465] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 104), - [1467] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 104), - [1469] = {.entry = {.count = 1, .reusable = false}}, SHIFT(834), - [1471] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_separator, 1, 0, 0), - [1473] = {.entry = {.count = 1, .reusable = false}}, SHIFT(860), - [1475] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), - [1477] = {.entry = {.count = 1, .reusable = false}}, SHIFT(632), - [1479] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2, 0, 0), - [1481] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2, 0, 0), - [1483] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), - [1485] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), - [1487] = {.entry = {.count = 1, .reusable = false}}, SHIFT(659), - [1489] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), - [1491] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), - [1493] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1044), - [1496] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), - [1498] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), - [1500] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1045), - [1503] = {.entry = {.count = 1, .reusable = false}}, SHIFT(645), - [1505] = {.entry = {.count = 1, .reusable = false}}, SHIFT(656), - [1507] = {.entry = {.count = 1, .reusable = false}}, SHIFT(674), - [1509] = {.entry = {.count = 1, .reusable = false}}, SHIFT(691), - [1511] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1000), - [1513] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1001), - [1515] = {.entry = {.count = 1, .reusable = false}}, SHIFT(239), - [1517] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, 0, 2), - [1519] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, 0, 2), - [1521] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 2, 0, 2), - [1523] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 2, 0, 2), - [1525] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, 0, 20), - [1527] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, 0, 20), - [1529] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 3, 0, 20), - [1531] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 3, 0, 20), - [1533] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), - [1535] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2, 0, 0), - [1537] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 31), - [1539] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 31), - [1541] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 61), - [1543] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 61), - [1545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 67), - [1547] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 67), - [1549] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 93), - [1551] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 93), - [1553] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3, 0, 25), - [1555] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3, 0, 25), - [1557] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, 0, 25), - [1559] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, 0, 25), - [1561] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 0), - [1563] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 0), - [1565] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 31), - [1567] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 31), - [1569] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3, 0, 25), - [1571] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3, 0, 25), - [1573] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 26), - [1575] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, 0, 26), - [1577] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 61), - [1579] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 61), - [1581] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5, 0, 61), - [1583] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5, 0, 61), - [1585] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2, 0, 0), - [1587] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2, 0, 0), - [1589] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 31), - [1591] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 31), - [1593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1651), - [1595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(182), - [1597] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), - [1599] = {.entry = {.count = 1, .reusable = false}}, SHIFT(663), - [1601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), - [1603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), - [1605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), - [1607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), - [1609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), - [1611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), - [1613] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1, 0, 0), - [1615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), - [1617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1700), - [1619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), - [1621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(670), - [1623] = {.entry = {.count = 1, .reusable = false}}, SHIFT(665), - [1625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(625), - [1627] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 67), - [1629] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 67), - [1631] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, 0, 51), - [1633] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, 0, 51), - [1635] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 0), - [1637] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 0), - [1639] = {.entry = {.count = 1, .reusable = false}}, SHIFT(628), - [1641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(629), - [1643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(630), - [1645] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), - [1647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), - [1649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(671), - [1651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(628), - [1653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1634), - [1655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(689), - [1657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(650), - [1659] = {.entry = {.count = 1, .reusable = false}}, SHIFT(630), - [1661] = {.entry = {.count = 1, .reusable = true}}, SHIFT(615), - [1663] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, 0, 51), - [1665] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, 0, 51), - [1667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 31), - [1669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 31), - [1671] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 61), - [1673] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 61), - [1675] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, 0, 51), - [1677] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, 0, 51), - [1679] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), - [1681] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), - [1683] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 93), - [1685] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 93), - [1687] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, 0, 17), - [1689] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, 0, 17), - [1691] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, 0, 39), - [1693] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, 0, 39), - [1695] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2, 0, 0), - [1697] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2, 0, 0), - [1699] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 41), - [1701] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 41), - [1703] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1050), - [1706] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1051), - [1709] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 71), - [1711] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 71), - [1713] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 72), - [1715] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 72), - [1717] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, 0, 13), - [1719] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, 0, 13), - [1721] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1056), - [1724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1605), - [1726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), - [1728] = {.entry = {.count = 1, .reusable = false}}, SHIFT(646), - [1730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(647), - [1732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(648), - [1734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), - [1736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(694), - [1738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), - [1740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651), - [1742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(646), - [1744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1720), - [1746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(652), - [1748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(653), - [1750] = {.entry = {.count = 1, .reusable = false}}, SHIFT(648), - [1752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(623), - [1754] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1059), - [1757] = {.entry = {.count = 1, .reusable = false}}, SHIFT(681), - [1759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(682), - [1761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(683), - [1763] = {.entry = {.count = 1, .reusable = true}}, SHIFT(684), - [1765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(685), - [1767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), - [1769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), - [1771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1674), - [1773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(687), - [1775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(688), - [1777] = {.entry = {.count = 1, .reusable = false}}, SHIFT(683), - [1779] = {.entry = {.count = 1, .reusable = true}}, SHIFT(626), - [1781] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1035), - [1784] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1037), - [1787] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1632), - [1789] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), - [1791] = {.entry = {.count = 1, .reusable = false}}, SHIFT(635), - [1793] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), - [1795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), - [1797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(672), - [1799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), - [1801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), - [1803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(693), - [1805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(635), - [1807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1671), - [1809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(633), - [1811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(634), - [1813] = {.entry = {.count = 1, .reusable = false}}, SHIFT(661), - [1815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(618), - [1817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), - [1819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1695), - [1821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), - [1823] = {.entry = {.count = 1, .reusable = false}}, SHIFT(637), - [1825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), - [1827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), - [1829] = {.entry = {.count = 1, .reusable = true}}, SHIFT(640), - [1831] = {.entry = {.count = 1, .reusable = true}}, SHIFT(641), - [1833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), - [1835] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), - [1837] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), - [1839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1612), - [1841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(643), - [1843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), - [1845] = {.entry = {.count = 1, .reusable = false}}, SHIFT(639), - [1847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(622), - [1849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), - [1851] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1038), - [1853] = {.entry = {.count = 1, .reusable = true}}, SHIFT(932), - [1855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374), - [1857] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), - [1859] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), - [1861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1559), - [1863] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1142), - [1865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(933), - [1867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994), - [1869] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1072), - [1871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1072), - [1873] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1140), - [1875] = {.entry = {.count = 1, .reusable = false}}, SHIFT(373), - [1877] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), - [1879] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), - [1881] = {.entry = {.count = 1, .reusable = false}}, SHIFT(394), - [1883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), - [1885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114), - [1887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), - [1889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1120), - [1891] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1139), - [1893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1127), - [1895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), - [1897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), - [1899] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1116), - [1901] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1091), - [1903] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), - [1905] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(665), - [1908] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), - [1910] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(1700), - [1913] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(665), - [1916] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(625), - [1919] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(630), - [1922] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(1634), - [1925] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(630), - [1928] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(615), - [1931] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comparison_operator, 2, 0, 18), - [1933] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comparison_operator, 2, 0, 18), - [1935] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 36), - [1937] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 36), SHIFT_REPEAT(612), - [1940] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1562), - [1942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1161), - [1944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1561), - [1946] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(648), - [1949] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(1720), - [1952] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(648), - [1955] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(623), - [1958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1137), - [1960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3, 0, 25), - [1962] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 34), - [1964] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(661), - [1967] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(1671), - [1970] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(661), - [1973] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(618), - [1976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3, 0, 25), - [1978] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 31), - [1980] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(683), - [1983] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(1674), - [1986] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(683), - [1989] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(626), - [1992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1115), - [1994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), - [1996] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 16), - [1998] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(639), - [2001] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(1612), - [2004] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(639), - [2007] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), SHIFT_REPEAT(622), - [2010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), - [2012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(272), - [2014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), - [2016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), - [2018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1479), - [2020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(478), - [2022] = {.entry = {.count = 1, .reusable = false}}, SHIFT(614), - [2024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), - [2026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), - [2028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1465), - [2030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), - [2032] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), - [2034] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), - [2036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), - [2038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(292), - [2040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), - [2042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342), - [2044] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1547), - [2046] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3, 0, 0), - [2048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2, 0, 0), - [2050] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_not_operator, 2, 0, 10), - [2052] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_not_operator, 2, 0, 10), - [2054] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), - [2056] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1667), - [2059] = {.entry = {.count = 1, .reusable = false}}, SHIFT(181), - [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1147), - [2063] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1147), - [2065] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), - [2067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), - [2069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), - [2071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), - [2073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), - [2075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1595), - [2077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), - [2079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 1, 0, 7), - [2081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), - [2083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), - [2085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(847), - [2087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(830), - [2089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(827), - [2091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1667), - [2093] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 1, 0, 0), - [2095] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_capture_pattern, 1, 0, 0), - [2097] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 0), - [2099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(946), - [2101] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), SHIFT(175), - [2104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(551), - [2106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), - [2108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), - [2110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(374), - [2112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 2, 0, 0), - [2114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_value_pattern, 2, 0, 0), - [2116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861), - [2118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(695), - [2120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(696), - [2122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(697), - [2124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(698), - [2126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(806), - [2128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(807), - [2130] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(181), - [2133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1147), - [2136] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1147), - [2139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), - [2141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(808), - [2143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(809), - [2145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1470), - [2147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(859), - [2149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1404), - [2151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851), - [2153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(850), - [2155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 35), - [2157] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 35), - [2159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, 0, 39), - [2161] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), - [2163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, 0, 32), - [2165] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 3, 0, 32), - [2167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), - [2169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(710), - [2171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(700), - [2173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), - [2175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, 0, 39), - [2177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, 0, 66), - [2179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), - [2181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5, 0, 0), - [2183] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 83), - [2185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1566), - [2187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(868), - [2189] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 4, 0, 66), - [2191] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), - [2193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), - [2195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(930), - [2197] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), - [2199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 27), - [2201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 2, 0, 107), - [2203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1574), - [2205] = {.entry = {.count = 1, .reusable = true}}, SHIFT(888), - [2207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), - [2209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), - [2211] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional_expression, 5, 0, 0), - [2213] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 27), - [2215] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1, 0, 0), - [2217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 3, 0, 0), - [2219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(987), - [2221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), - [2223] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(346), - [2226] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(1595), - [2229] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(497), - [2232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), - [2234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), - [2236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2, 0, 0), - [2238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), - [2240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), - [2242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1, 0, 0), - [2244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2, 0, 0), - [2246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), - [2248] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(987), - [2251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 2, 0, 0), - [2253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), - [2255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1, 0, 0), - [2257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 4, 0, 0), - [2259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(350), - [2261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), - [2263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), - [2265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 3, 0, 136), - [2267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, 0, 98), - [2269] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), - [2271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1717), - [2273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1713), - [2275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1691), - [2277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 5, 0, 0), - [2279] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 5, 0, 0), - [2281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 31), - [2283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1685), - [2285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1619), - [2287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1629), - [2289] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 5, 0, 136), - [2291] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 4, 0, 0), - [2293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), - [2295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), - [2297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2, 0, 0), - [2299] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 4, 0, 149), - [2301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2, 0, 14), - [2303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 6, 0, 0), - [2305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 6, 0, 136), - [2307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 122), - [2309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), - [2311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 7, 0, 0), - [2313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 7, 0, 136), - [2315] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 8, 0, 136), - [2317] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), - [2319] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1133), - [2322] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1133), - [2325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), - [2327] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 9, 0, 136), - [2329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 123), - [2331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), - [2333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 4, 0, 0), - [2335] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 3, 0, 132), - [2337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(986), - [2339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_or_pattern, 1, 0, 0), - [2341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(988), - [2343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 4, 0, 136), - [2345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 141), - [2347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), - [2349] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1, 0, 0), - [2351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), - [2353] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1133), - [2355] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1, 0, 0), - [2357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), - [2359] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 2, 0, 0), - [2361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2, 0, 0), - [2363] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 3, 0, 0), - [2365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_group_pattern, 3, 0, 131), - [2367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 2, 0, 0), - [2369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), - [2371] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(297), - [2374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 3, 0, 0), - [2376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1219), - [2378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1312), - [2380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1528), - [2382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), - [2384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(708), - [2386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), - [2388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1606), - [2390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1, 0, 0), - [2392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 31), - [2394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), - [2396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 10), - [2398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), - [2400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2, 0, 0), - [2402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, 0, 66), - [2404] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2, 0, 0), - [2406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2, 0, 11), - [2408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), - [2410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1588), - [2412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1220), - [2414] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1696), - [2416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1659), - [2418] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3, 0, 0), - [2420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_pattern, 1, 0, 0), - [2422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1703), - [2424] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1, 0, 0), - [2426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), - [2428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(397), - [2430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(419), - [2432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), - [2434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), - [2436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), - [2438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), - [2440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(968), - [2442] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, 0, 15), - [2444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), - [2446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(874), - [2448] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), - [2450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551), - [2452] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1216), - [2454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1336), - [2456] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1664), - [2458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, 0, 32), - [2460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), - [2462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [2464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), - [2466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [2468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), - [2470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [2472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), - [2474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902), - [2476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1, 0, 0), - [2478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, 0, 62), - [2480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), - [2482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 16), - [2484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1, 0, 0), - [2486] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, 0, 43), - [2488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, 0, 43), - [2490] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, 0, 43), - [2492] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, 0, 43), - [2494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1698), - [2496] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 1, 0, 6), - [2498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(425), - [2500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), - [2502] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 36), SHIFT_REPEAT(251), - [2505] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 36), - [2507] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 36), SHIFT_REPEAT(263), - [2510] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3, 0, 43), - [2512] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3, 0, 43), - [2514] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 10), - [2516] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2, 0, 0), - [2518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), - [2520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, 0, 35), - [2522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), - [2524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1298), - [2526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, 0, 119), - [2528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), - [2530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2, 0, 0), - [2532] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1698), - [2535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), - [2537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [2539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [2541] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_bound, 2, 0, 109), - [2543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), - [2545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), - [2547] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(979), - [2550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 31), - [2552] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_as_pattern, 3, 0, 135), - [2554] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), - [2556] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), - [2558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__index_expression, 1, 0, 0), - [2560] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), - [2562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 95), - [2564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), - [2566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), - [2568] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), SHIFT_REPEAT(342), - [2571] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 68), - [2573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), - [2575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), - [2577] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), - [2579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), - [2581] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, 0, 43), - [2583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, 0, 43), - [2585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305), - [2587] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 6), - [2589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), - [2591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [2593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1206), - [2595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 16), - [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), - [2599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), - [2601] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 31), - [2603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 27), - [2605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_star_pattern, 2, 0, 11), - [2607] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_param_default, 2, 0, 110), - [2609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1380), - [2611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1310), - [2613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1283), - [2615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), - [2617] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 120), - [2619] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 121), - [2621] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, 0, 30), - [2623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), - [2625] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, 0, 22), - [2627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1311), - [2629] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 35), - [2631] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 94), - [2633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), - [2635] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, 0, 53), - [2637] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 36), SHIFT_REPEAT(250), - [2640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [2642] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1, 0, 0), - [2644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), - [2646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1288), - [2648] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), - [2650] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(173), - [2653] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(1284), - [2656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 5, 0, 88), - [2658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 36), - [2660] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 36), SHIFT_REPEAT(242), - [2663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1223), - [2665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302), - [2667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1458), - [2669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2, 0, 0), - [2671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1284), - [2673] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1255), - [2675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1636), - [2677] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, 0, 6), - [2679] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5, 0, 140), - [2681] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 4, 0, 63), - [2683] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 16), - [2685] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), - [2687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854), - [2689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [2691] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_guard, 2, 0, 133), - [2693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), - [2695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(856), - [2697] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1638), - [2699] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2, 0, 0), - [2701] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3, 0, 0), - [2703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1022), - [2705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1253), - [2707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1494), - [2709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [2711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(862), - [2713] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 23), - [2715] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), - [2717] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 44), SHIFT_REPEAT(1499), - [2720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 44), - [2722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1455), - [2724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1457), - [2726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), - [2728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 0), - [2730] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 49), - [2732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), - [2734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 0), - [2736] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 52), SHIFT_REPEAT(339), - [2739] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 52), - [2741] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(432), - [2744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [2746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1300), - [2748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), - [2750] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(315), - [2753] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2, 0, 0), - [2755] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 84), - [2757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1367), - [2759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1681), - [2761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(345), - [2763] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), - [2765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(335), - [2767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), - [2769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [2771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(344), - [2773] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1, 0, 0), - [2775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1362), - [2777] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1638), - [2780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), - [2782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exception_list, 2, 0, 16), - [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), - [2786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), - [2788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 28), - [2790] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, 0, 65), - [2792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), - [2794] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, 0, 0), - [2796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), - [2798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), - [2800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), - [2802] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, 0, 15), - [2804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), - [2806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [2808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [2810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), - [2812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), - [2814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [2816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [2818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), - [2820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), - [2822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1271), - [2824] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 22), - [2826] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3, 0, 0), - [2828] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3, 0, 0), - [2830] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1, 0, 7), - [2832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(467), - [2834] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), SHIFT_REPEAT(133), - [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), - [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275), - [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), - [2843] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 29), - [2845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [2847] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), - [2849] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), SHIFT_REPEAT(1362), - [2852] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 36), SHIFT_REPEAT(430), - [2855] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 36), - [2857] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3, 0, 0), - [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), - [2861] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 2, 0, 23), - [2863] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 2, 0, 23), - [2865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), - [2867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1538), - [2869] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1239), - [2871] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1263), - [2873] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 113), SHIFT_REPEAT(1182), - [2876] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 113), - [2878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1027), - [2880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), - [2882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(483), - [2884] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 36), SHIFT_REPEAT(245), - [2887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 36), - [2889] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, 0, 86), - [2891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), - [2893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1405), - [2895] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 44), SHIFT_REPEAT(1460), - [2898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1025), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(499), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(453), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1357), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1213), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(343), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(78), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(340), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(233), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(247), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1581), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1589), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1603), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(345), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(347), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(501), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(427), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1683), + [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(295), + [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), + [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(643), + [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), + [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1699), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1743), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1653), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(452), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(469), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1659), + [69] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(396), + [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1027), + [75] = {.entry = {.count = 1, .reusable = false}}, SHIFT(179), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), + [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(950), + [81] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1044), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1040), + [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(424), + [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(437), + [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(513), + [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(425), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1720), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(305), + [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1745), + [103] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1723), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), + [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1583), + [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1533), + [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), + [115] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(499), + [118] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(453), + [121] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1357), + [124] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1213), + [127] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(157), + [130] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(343), + [133] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(78), + [136] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(340), + [139] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(233), + [142] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(247), + [145] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(182), + [148] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1581), + [151] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1589), + [154] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1603), + [157] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(424), + [160] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(437), + [163] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(513), + [166] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(425), + [169] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1720), + [172] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(305), + [175] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(67), + [178] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(643), + [181] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(160), + [184] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(165), + [187] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(349), + [190] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1745), + [193] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1743), + [196] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1653), + [199] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(452), + [202] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(469), + [205] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1723), + [208] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(386), + [211] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(396), + [214] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1027), + [217] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(179), + [220] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(950), + [223] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(950), + [226] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(134), + [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), + [231] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1044), + [234] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1040), + [237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), + [239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1, 0, 0), + [241] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(345), + [244] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(347), + [247] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(501), + [250] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(427), + [253] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1683), + [256] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(295), + [259] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(66), + [262] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1699), + [265] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1659), + [268] = {.entry = {.count = 1, .reusable = false}}, SHIFT(778), + [270] = {.entry = {.count = 1, .reusable = false}}, SHIFT(774), + [272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), + [274] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(236), + [277] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 1), REDUCE(sym_primary_expression, 1, 0, 1), + [280] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(397), + [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [285] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 1), + [287] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(688), + [290] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(208), + [293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), + [295] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(349), + [298] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(372), + [301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(688), + [303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), + [305] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1021), + [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 1), + [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(720), + [311] = {.entry = {.count = 1, .reusable = false}}, SHIFT(720), + [313] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1059), + [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1061), + [319] = {.entry = {.count = 1, .reusable = false}}, SHIFT(494), + [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(616), + [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), + [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), + [331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(477), + [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(544), + [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(514), + [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(483), + [347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551), + [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(594), + [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(531), + [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [361] = {.entry = {.count = 1, .reusable = false}}, SHIFT(831), + [363] = {.entry = {.count = 1, .reusable = false}}, SHIFT(835), + [365] = {.entry = {.count = 1, .reusable = false}}, SHIFT(387), + [367] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), + [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(561), + [371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(562), + [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(441), + [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(568), + [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(482), + [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), + [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(574), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(511), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(576), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(613), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(485), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), + [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(580), + [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(611), + [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(467), + [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(475), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), + [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(519), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(536), + [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(487), + [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(539), + [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), + [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(590), + [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(458), + [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), + [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(498), + [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(505), + [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(526), + [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(596), + [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(607), + [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(474), + [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(599), + [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(449), + [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(462), + [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), + [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(532), + [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(463), + [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(555), + [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), + [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(608), + [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1183), + [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(446), + [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(548), + [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(585), + [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1607), + [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(316), + [567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1598), + [569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(330), + [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), + [573] = {.entry = {.count = 1, .reusable = false}}, SHIFT(911), + [575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [577] = {.entry = {.count = 1, .reusable = false}}, SHIFT(643), + [579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [581] = {.entry = {.count = 1, .reusable = false}}, SHIFT(150), + [583] = {.entry = {.count = 1, .reusable = false}}, SHIFT(706), + [585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), REDUCE(sym_list_splat_pattern, 2, 0, 8), + [590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [592] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 8), + [594] = {.entry = {.count = 1, .reusable = false}}, SHIFT(688), + [596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), + [598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 8), + [600] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), + [602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), + [606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(692), + [608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), + [610] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), + [612] = {.entry = {.count = 1, .reusable = false}}, SHIFT(949), + [614] = {.entry = {.count = 1, .reusable = false}}, SHIFT(918), + [616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [618] = {.entry = {.count = 1, .reusable = false}}, SHIFT(370), + [620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), + [622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), + [624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), + [628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), + [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1060), + [632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1055), + [634] = {.entry = {.count = 1, .reusable = false}}, SHIFT(362), + [636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), + [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), + [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(673), + [642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [644] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), + [646] = {.entry = {.count = 1, .reusable = false}}, SHIFT(985), + [648] = {.entry = {.count = 1, .reusable = false}}, SHIFT(988), + [650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(628), + [656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), + [658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), + [660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(985), + [662] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), + [664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1049), + [666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1050), + [668] = {.entry = {.count = 1, .reusable = false}}, SHIFT(872), + [670] = {.entry = {.count = 1, .reusable = false}}, SHIFT(850), + [672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), + [674] = {.entry = {.count = 1, .reusable = true}}, SHIFT(524), + [676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(401), + [678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [680] = {.entry = {.count = 1, .reusable = false}}, SHIFT(391), + [682] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1023), + [684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(170), + [686] = {.entry = {.count = 1, .reusable = false}}, SHIFT(149), + [688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851), + [690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(914), + [692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(515), + [694] = {.entry = {.count = 1, .reusable = false}}, SHIFT(842), + [696] = {.entry = {.count = 1, .reusable = false}}, SHIFT(855), + [698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [700] = {.entry = {.count = 1, .reusable = false}}, SHIFT(632), + [702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 7), + [704] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2, 0, 7), + [706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [708] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), + [710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3, 0, 16), + [712] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3, 0, 16), + [714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), + [716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), + [718] = {.entry = {.count = 1, .reusable = false}}, SHIFT(837), + [720] = {.entry = {.count = 1, .reusable = false}}, SHIFT(854), + [722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), + [724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1700), + [726] = {.entry = {.count = 1, .reusable = false}}, SHIFT(395), + [728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), + [732] = {.entry = {.count = 1, .reusable = false}}, SHIFT(416), + [734] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1026), + [736] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), + [738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1733), + [740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(707), + [742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1664), + [744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(878), + [746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1685), + [748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(989), + [750] = {.entry = {.count = 1, .reusable = false}}, SHIFT(832), + [752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(836), + [754] = {.entry = {.count = 1, .reusable = false}}, SHIFT(354), + [756] = {.entry = {.count = 1, .reusable = false}}, SHIFT(397), + [758] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 1, 0, 0), + [760] = {.entry = {.count = 1, .reusable = false}}, SHIFT(399), + [762] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1024), + [764] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [766] = {.entry = {.count = 1, .reusable = false}}, SHIFT(421), + [768] = {.entry = {.count = 1, .reusable = false}}, SHIFT(372), + [770] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3, 0, 16), + [772] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 7), + [774] = {.entry = {.count = 1, .reusable = false}}, SHIFT(374), + [776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 3, 0, 52), + [782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(397), + [784] = {.entry = {.count = 1, .reusable = false}}, SHIFT(858), + [786] = {.entry = {.count = 1, .reusable = false}}, SHIFT(857), + [788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), + [790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), + [792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1640), + [794] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), + [796] = {.entry = {.count = 1, .reusable = false}}, SHIFT(366), + [798] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 26), + [800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715), + [802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1615), + [804] = {.entry = {.count = 1, .reusable = false}}, SHIFT(407), + [806] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1, 0, 0), + [808] = {.entry = {.count = 1, .reusable = false}}, SHIFT(786), + [810] = {.entry = {.count = 1, .reusable = false}}, SHIFT(787), + [812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(767), + [814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), + [816] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), + [818] = {.entry = {.count = 1, .reusable = false}}, SHIFT(169), + [820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(960), + [822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1737), + [824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(912), + [826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1684), + [828] = {.entry = {.count = 1, .reusable = false}}, SHIFT(984), + [830] = {.entry = {.count = 1, .reusable = false}}, SHIFT(986), + [832] = {.entry = {.count = 1, .reusable = false}}, SHIFT(153), + [834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), + [836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), + [838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), + [840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), + [842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(726), + [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(729), + [846] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2, 0, 7), + [848] = {.entry = {.count = 1, .reusable = false}}, SHIFT(409), + [850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), + [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(732), + [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(733), + [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(734), + [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(735), + [860] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 7, 0, 145), + [862] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 7, 0, 145), + [864] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1022), + [866] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, 0, 16), + [868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(941), + [870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(942), + [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(873), + [874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), + [876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(783), + [878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(915), + [880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), + [882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(893), + [884] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 126), + [886] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 126), + [888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(736), + [890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(971), + [892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(974), + [894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(977), + [896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978), + [898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(979), + [900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(980), + [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), + [904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 127), + [906] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 127), + [908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), + [910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), + [912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), + [914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 101), + [916] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, 0, 101), + [918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(888), + [920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), + [922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1, 0, 0), + [924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [926] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 7), + [928] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 34), + [930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 3, 0, 16), + [932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(940), + [934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), + [936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), + [938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(898), + [940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(920), + [942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(970), + [944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(719), + [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(725), + [948] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, 0, 57), + [950] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, 0, 57), + [952] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1635), + [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1736), + [956] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1632), + [958] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 84), + [960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 84), + [962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), + [964] = {.entry = {.count = 1, .reusable = false}}, SHIFT(907), + [966] = {.entry = {.count = 1, .reusable = false}}, SHIFT(913), + [968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), + [970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [972] = {.entry = {.count = 1, .reusable = false}}, SHIFT(389), + [974] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1025), + [976] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), + [978] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1637), + [980] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1739), + [982] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1693), + [984] = {.entry = {.count = 1, .reusable = false}}, SHIFT(304), + [986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1, 0, 0), + [988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(335), + [992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [994] = {.entry = {.count = 1, .reusable = false}}, SHIFT(292), + [996] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 70), + [998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), + [1000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1726), + [1002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), + [1004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 30), + [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 29), + [1008] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 70), + [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 0), + [1012] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 0), + [1014] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 10), + [1016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 98), + [1018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1704), + [1020] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 69), + [1022] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1, 0, 0), + [1024] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1, 0, 0), + [1026] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3, 0, 0), + [1028] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3, 0, 0), + [1030] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, 0, 71), + [1032] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, 0, 71), + [1034] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), + [1036] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), + [1038] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(292), + [1041] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), + [1043] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), + [1045] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1739), + [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 41), + [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, 0, 41), + [1052] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2, 0, 0), + [1054] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2, 0, 0), + [1056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 105), + [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 105), + [1060] = {.entry = {.count = 1, .reusable = false}}, SHIFT(394), + [1062] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, 0, 55), + [1064] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, 0, 55), + [1066] = {.entry = {.count = 1, .reusable = false}}, SHIFT(431), + [1068] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 79), + [1070] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 79), + [1072] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 80), + [1074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 80), + [1076] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(304), + [1079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4, 0, 0), + [1081] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4, 0, 0), + [1083] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1736), + [1086] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2, 0, 0), + [1088] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), + [1090] = {.entry = {.count = 1, .reusable = false}}, SHIFT(617), + [1092] = {.entry = {.count = 1, .reusable = false}}, SHIFT(618), + [1094] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), + [1096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(509), + [1098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), + [1100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1705), + [1102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), + [1104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), + [1106] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), SHIFT_REPEAT(431), + [1109] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), SHIFT_REPEAT(394), + [1112] = {.entry = {.count = 1, .reusable = false}}, SHIFT(849), + [1114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(859), + [1116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), + [1118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(506), + [1120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), + [1122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1746), + [1124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 8, 0, 169), + [1126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 8, 0, 169), + [1128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cases, 1, 0, 0), + [1130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cases, 1, 0, 0), + [1132] = {.entry = {.count = 1, .reusable = false}}, SHIFT(870), + [1134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 134), + [1136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 134), + [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, 0, 161), + [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, 0, 161), + [1142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, 0, 162), + [1144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, 0, 162), + [1146] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), + [1148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), + [1150] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(870), + [1153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(869), + [1156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7, 0, 167), + [1158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7, 0, 167), + [1160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 84), + [1162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 84), + [1164] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, 0, 57), + [1166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, 0, 57), + [1168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7, 0, 168), + [1170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7, 0, 168), + [1172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1054), + [1174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1385), + [1176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1269), + [1178] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5, 0, 152), + [1180] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5, 0, 152), + [1182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5, 0, 151), + [1184] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5, 0, 151), + [1186] = {.entry = {.count = 1, .reusable = false}}, SHIFT(869), + [1188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1422), + [1190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(632), + [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 26), + [1194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, 0, 55), + [1196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, 0, 55), + [1198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 147), + [1200] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 147), + [1202] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1416), + [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), + [1206] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), REDUCE(sym_list_splat_pattern, 2, 0, 9), + [1209] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 0), + [1211] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), + [1213] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), + [1215] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3, 0, 52), + [1217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, 0, 80), + [1219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, 0, 80), + [1221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 77), + [1223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 77), + [1225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, 0, 108), + [1227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, 0, 108), + [1229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, 0, 56), + [1231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, 0, 56), + [1233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 84), + [1235] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 84), + [1237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 83), + [1239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 83), + [1241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 57), + [1243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 57), + [1245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 129), + [1247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 129), + [1249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 133), + [1251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 133), + [1253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, 0, 57), + [1255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, 0, 57), + [1257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 154), + [1259] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 154), + [1261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 155), + [1263] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 155), + [1265] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), REDUCE(sym_primary_expression, 1, 0, 0), + [1268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), + [1270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 0), + [1272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), + [1274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 4, 0, 138), + [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 4, 0, 138), + [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, 0, 84), + [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, 0, 84), + [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 6, 0, 163), + [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 6, 0, 163), + [1286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, 0, 65), + [1288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, 0, 65), + [1290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2, 0, 0), + [1292] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), REDUCE(sym_list, 2, 0, 0), + [1295] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2, 0, 0), + [1297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), + [1299] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2, 0, 0), + [1301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, 0, 158), + [1303] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, 0, 158), + [1305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 159), + [1307] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 159), + [1309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 160), + [1311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 160), + [1313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 93), + [1315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 93), + [1317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 102), + [1319] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 102), + [1321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 104), + [1323] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 104), + [1325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 165), + [1327] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 165), + [1329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 10, 0, 166), + [1331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 10, 0, 166), + [1333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2, 0, 0), + [1335] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), REDUCE(sym_tuple, 2, 0, 0), + [1338] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2, 0, 0), + [1340] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), + [1342] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2, 0, 0), + [1344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, 0, 106), + [1346] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, 0, 106), + [1348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 107), + [1350] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 107), + [1352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 146), + [1354] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 146), + [1356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 78), + [1358] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 78), + [1360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, 0, 109), + [1362] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, 0, 109), + [1364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 81), + [1366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 81), + [1368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, 0, 57), + [1370] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, 0, 57), + [1372] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, 0, 19), + [1374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, 0, 19), + [1376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 57), + [1378] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 57), + [1380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 148), + [1382] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 148), + [1384] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 82), + [1386] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 82), + [1388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 94), + [1390] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 94), + [1392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 117), + [1394] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 117), + [1396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 149), + [1398] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 149), + [1400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 118), + [1402] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 118), + [1404] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, 0, 58), + [1406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, 0, 58), + [1408] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 60), + [1410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 60), + [1412] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 61), + [1414] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 61), + [1416] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 119), + [1418] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 119), + [1420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 120), + [1422] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 120), + [1424] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 121), + [1426] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 121), + [1428] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 150), + [1430] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 150), + [1432] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 85), + [1434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 85), + [1436] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 92), + [1438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 92), + [1440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, 0, 128), + [1442] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, 0, 128), + [1444] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 130), + [1446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 130), + [1448] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 131), + [1450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 131), + [1452] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 132), + [1454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 132), + [1456] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4, 0, 84), + [1458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4, 0, 84), + [1460] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, 0, 84), + [1462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, 0, 84), + [1464] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 141), + [1466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 141), + [1468] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 142), + [1470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 142), + [1472] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 7, 0, 143), + [1474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, 0, 143), + [1476] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 156), + [1478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 156), + [1480] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 157), + [1482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 157), + [1484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, 0, 90), + [1486] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, 0, 90), + [1488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), + [1490] = {.entry = {.count = 1, .reusable = false}}, SHIFT(860), + [1492] = {.entry = {.count = 1, .reusable = false}}, SHIFT(871), + [1494] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_separator, 1, 0, 0), + [1496] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), + [1498] = {.entry = {.count = 1, .reusable = false}}, SHIFT(647), + [1500] = {.entry = {.count = 1, .reusable = false}}, SHIFT(671), + [1502] = {.entry = {.count = 1, .reusable = false}}, SHIFT(652), + [1504] = {.entry = {.count = 1, .reusable = false}}, SHIFT(633), + [1506] = {.entry = {.count = 1, .reusable = false}}, SHIFT(675), + [1508] = {.entry = {.count = 1, .reusable = false}}, SHIFT(687), + [1510] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), + [1512] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), + [1514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1061), + [1517] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1013), + [1519] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1011), + [1521] = {.entry = {.count = 1, .reusable = false}}, SHIFT(244), + [1523] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), + [1525] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), + [1527] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1059), + [1530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2, 0, 0), + [1532] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2, 0, 0), + [1534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), + [1536] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), + [1538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 3, 0, 20), + [1540] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 3, 0, 20), + [1542] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 2, 0, 2), + [1544] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 2, 0, 2), + [1546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, 0, 2), + [1548] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, 0, 2), + [1550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, 0, 20), + [1552] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, 0, 20), + [1554] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1681), + [1556] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [1558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), + [1560] = {.entry = {.count = 1, .reusable = false}}, SHIFT(674), + [1562] = {.entry = {.count = 1, .reusable = true}}, SHIFT(676), + [1564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), + [1566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), + [1568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), + [1570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), + [1572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), + [1574] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1, 0, 0), + [1576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(674), + [1578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1710), + [1580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(682), + [1582] = {.entry = {.count = 1, .reusable = true}}, SHIFT(683), + [1584] = {.entry = {.count = 1, .reusable = false}}, SHIFT(677), + [1586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(625), + [1588] = {.entry = {.count = 1, .reusable = false}}, SHIFT(645), + [1590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), + [1592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(650), + [1594] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), + [1596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), + [1598] = {.entry = {.count = 1, .reusable = true}}, SHIFT(656), + [1600] = {.entry = {.count = 1, .reusable = true}}, SHIFT(645), + [1602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1702), + [1604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(626), + [1606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), + [1608] = {.entry = {.count = 1, .reusable = false}}, SHIFT(650), + [1610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(624), + [1612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2, 0, 0), + [1614] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2, 0, 0), + [1616] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, 0, 17), + [1618] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, 0, 17), + [1620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 28), + [1622] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, 0, 28), + [1624] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3, 0, 27), + [1626] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3, 0, 27), + [1628] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, 0, 27), + [1630] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, 0, 27), + [1632] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 0), + [1634] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 0), + [1636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 32), + [1638] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 32), + [1640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3, 0, 27), + [1642] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3, 0, 27), + [1644] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), + [1646] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2, 0, 0), + [1648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, 0, 51), + [1650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, 0, 51), + [1652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, 0, 51), + [1654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, 0, 51), + [1656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, 0, 51), + [1658] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, 0, 51), + [1660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 32), + [1662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 32), + [1664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 62), + [1666] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 62), + [1668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 0), + [1670] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 0), + [1672] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 32), + [1674] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 32), + [1676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 68), + [1678] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 68), + [1680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5, 0, 62), + [1682] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5, 0, 62), + [1684] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 32), + [1686] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 32), + [1688] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 62), + [1690] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 62), + [1692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 68), + [1694] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 68), + [1696] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 96), + [1698] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 96), + [1700] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 62), + [1702] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 62), + [1704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 96), + [1706] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 96), + [1708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), + [1710] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), + [1712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, 0, 40), + [1714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, 0, 40), + [1716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 72), + [1718] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 72), + [1720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 73), + [1722] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 73), + [1724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2, 0, 0), + [1726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2, 0, 0), + [1728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, 0, 13), + [1730] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, 0, 13), + [1732] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1049), + [1735] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1050), + [1738] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), + [1740] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), + [1742] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1060), + [1745] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1055), + [1748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1631), + [1750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), + [1752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(644), + [1754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(634), + [1756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), + [1758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(640), + [1760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), + [1762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [1764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(646), + [1766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), + [1768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1619), + [1770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(653), + [1772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(691), + [1774] = {.entry = {.count = 1, .reusable = false}}, SHIFT(637), + [1776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(620), + [1778] = {.entry = {.count = 1, .reusable = false}}, SHIFT(661), + [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), + [1782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), + [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(699), + [1786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), + [1788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), + [1790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), + [1792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1698), + [1794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), + [1796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), + [1798] = {.entry = {.count = 1, .reusable = false}}, SHIFT(663), + [1800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(621), + [1802] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1044), + [1805] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1040), + [1808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1668), + [1810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [1812] = {.entry = {.count = 1, .reusable = false}}, SHIFT(657), + [1814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(672), + [1816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(695), + [1818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679), + [1820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(689), + [1822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [1824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(630), + [1826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(657), + [1828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1730), + [1830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), + [1832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), + [1834] = {.entry = {.count = 1, .reusable = false}}, SHIFT(695), + [1836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(622), + [1838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), + [1840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1703), + [1842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [1844] = {.entry = {.count = 1, .reusable = false}}, SHIFT(697), + [1846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(641), + [1848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(696), + [1850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(684), + [1852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(631), + [1854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), + [1856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(629), + [1858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(697), + [1860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1672), + [1862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(635), + [1864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), + [1866] = {.entry = {.count = 1, .reusable = false}}, SHIFT(696), + [1868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(623), + [1870] = {.entry = {.count = 1, .reusable = false}}, SHIFT(438), + [1872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), + [1874] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1042), + [1876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [1878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1514), + [1880] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), + [1882] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), + [1884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1587), + [1886] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1117), + [1888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), + [1890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1007), + [1892] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1078), + [1894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1078), + [1896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1116), + [1898] = {.entry = {.count = 1, .reusable = false}}, SHIFT(363), + [1900] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), + [1902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), + [1904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1142), + [1906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), + [1908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), + [1910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), + [1912] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1160), + [1914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1138), + [1916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1141), + [1918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1158), + [1920] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1136), + [1922] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1101), + [1924] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), + [1926] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), + [1928] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(650), + [1931] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1702), + [1934] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(650), + [1937] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(624), + [1940] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comparison_operator, 2, 0, 18), + [1942] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comparison_operator, 2, 0, 18), + [1944] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(677), + [1947] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1710), + [1950] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(677), + [1953] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(625), + [1956] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 37), + [1958] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 37), SHIFT_REPEAT(589), + [1961] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(637), + [1964] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1619), + [1967] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(637), + [1970] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(620), + [1973] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 32), + [1975] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(695), + [1978] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1730), + [1981] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(695), + [1984] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(622), + [1987] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1543), + [1989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), + [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1537), + [1993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1176), + [1995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3, 0, 27), + [1997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), + [1999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3, 0, 27), + [2001] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 35), + [2003] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(663), + [2006] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1698), + [2009] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(663), + [2012] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(621), + [2015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [2017] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 16), + [2019] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(696), + [2022] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1672), + [2025] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(696), + [2028] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(623), + [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1516), + [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465), + [2043] = {.entry = {.count = 1, .reusable = false}}, SHIFT(619), + [2045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), + [2047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), + [2049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1512), + [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [2053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(419), + [2055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), + [2057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(373), + [2059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [2063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1383), + [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1550), + [2067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2, 0, 0), + [2069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3, 0, 0), + [2071] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_not_operator, 2, 0, 10), + [2073] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_not_operator, 2, 0, 10), + [2075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), + [2077] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1734), + [2080] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), + [2082] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1149), + [2084] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1149), + [2086] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [2088] = {.entry = {.count = 1, .reusable = true}}, SHIFT(847), + [2090] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [2092] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), + [2094] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), + [2096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1623), + [2098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(510), + [2100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 1, 0, 7), + [2102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), + [2104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), + [2106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1734), + [2108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 1, 0, 0), + [2110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_capture_pattern, 1, 0, 0), + [2112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 0), + [2114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(843), + [2116] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(184), + [2119] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1149), + [2122] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1149), + [2125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), + [2127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), + [2129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), + [2131] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), SHIFT(180), + [2134] = {.entry = {.count = 1, .reusable = false}}, SHIFT(527), + [2136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), + [2138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(338), + [2140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), + [2142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), + [2144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), + [2146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(794), + [2148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(795), + [2150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1485), + [2152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [2154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), + [2156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1509), + [2158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(840), + [2160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(702), + [2162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), + [2164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(701), + [2166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848), + [2168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 2, 0, 0), + [2170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_value_pattern, 2, 0, 0), + [2172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(703), + [2174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(700), + [2176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, 0, 40), + [2178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, 0, 40), + [2180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(921), + [2182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), + [2184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), + [2186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5, 0, 0), + [2188] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional_expression, 5, 0, 0), + [2190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 36), + [2192] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 36), + [2194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(874), + [2196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), + [2198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), + [2200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, 0, 33), + [2202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 3, 0, 33), + [2204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 86), + [2206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1556), + [2208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 2, 0, 110), + [2210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1604), + [2212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 23), + [2214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, 0, 67), + [2216] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 4, 0, 67), + [2218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), + [2220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(709), + [2222] = {.entry = {.count = 1, .reusable = true}}, SHIFT(877), + [2224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), + [2226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 23), + [2228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(967), + [2230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [2232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(723), + [2234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), + [2236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1, 0, 0), + [2238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2, 0, 0), + [2240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), + [2242] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(356), + [2245] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(1623), + [2248] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(510), + [2251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 3, 0, 0), + [2253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994), + [2255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), + [2257] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(994), + [2260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [2262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), + [2264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1, 0, 0), + [2266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), + [2268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [2270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 4, 0, 0), + [2272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1, 0, 0), + [2274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [2276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2, 0, 0), + [2278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 2, 0, 0), + [2280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 3, 0, 0), + [2282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 9, 0, 140), + [2284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), + [2286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), + [2288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), + [2290] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(307), + [2293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 4, 0, 140), + [2295] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_or_pattern, 1, 0, 0), + [2297] = {.entry = {.count = 1, .reusable = true}}, SHIFT(995), + [2299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), + [2301] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), + [2303] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1119), + [2306] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1119), + [2309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), + [2311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 32), + [2313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 145), + [2315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [2317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 3, 0, 0), + [2319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2, 0, 14), + [2321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 4, 0, 153), + [2323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 3, 0, 136), + [2325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 5, 0, 0), + [2327] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 5, 0, 0), + [2329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_group_pattern, 3, 0, 135), + [2331] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 4, 0, 0), + [2333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, 0, 101), + [2335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [2337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [2339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), + [2341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2, 0, 0), + [2343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 5, 0, 140), + [2345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 6, 0, 0), + [2347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 6, 0, 140), + [2349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 2, 0, 0), + [2351] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 4, 0, 0), + [2353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1749), + [2355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1745), + [2357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1723), + [2359] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 7, 0, 0), + [2361] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1, 0, 0), + [2363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), + [2365] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1119), + [2367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1, 0, 0), + [2369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 7, 0, 140), + [2371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 8, 0, 140), + [2373] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 3, 0, 140), + [2375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(992), + [2377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2, 0, 0), + [2379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1740), + [2381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1699), + [2383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1659), + [2385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 127), + [2387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), + [2389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 126), + [2391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), + [2393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [2395] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 2, 0, 0), + [2397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), + [2399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), + [2401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(420), + [2403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [2405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [2407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [2409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, 0, 33), + [2411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 32), + [2413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1245), + [2415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1381), + [2417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1571), + [2419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1, 0, 0), + [2421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), + [2423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1632), + [2425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [2427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(958), + [2429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342), + [2431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1344), + [2433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1, 0, 0), + [2435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), + [2437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527), + [2439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [2441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [2443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [2445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), + [2447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), + [2449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1693), + [2451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3, 0, 0), + [2453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1254), + [2455] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1744), + [2457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1679), + [2459] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, 0, 67), + [2461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [2463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), + [2465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), + [2467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [2469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), + [2471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [2473] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1251), + [2475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1343), + [2477] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1638), + [2479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), + [2481] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 10), + [2483] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, 0, 63), + [2485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), + [2487] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, 0, 15), + [2489] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1, 0, 0), + [2491] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2, 0, 0), + [2493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), + [2495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713), + [2497] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2, 0, 11), + [2499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_pattern, 1, 0, 0), + [2501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1662), + [2503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2, 0, 0), + [2505] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1641), + [2508] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 16), + [2510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [2512] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 98), + [2514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), + [2516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1641), + [2518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1, 0, 0), + [2520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__index_expression, 1, 0, 0), + [2522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), + [2524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2, 0, 0), + [2526] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), + [2528] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), + [2530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), + [2532] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(256), + [2535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [2537] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), + [2539] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), + [2541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [2543] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 1, 0, 6), + [2545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(344), + [2547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), + [2549] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), + [2551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2, 0, 0), + [2553] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), + [2555] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), SHIFT_REPEAT(386), + [2558] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, 0, 44), + [2560] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, 0, 44), + [2562] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, 0, 44), + [2564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, 0, 44), + [2566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, 0, 36), + [2568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 69), + [2570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [2572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [2574] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 32), + [2576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, 0, 122), + [2578] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_bound, 2, 0, 112), + [2580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1251), + [2582] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(254), + [2585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), + [2587] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), + [2589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [2591] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, 0, 44), + [2593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, 0, 44), + [2595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1340), + [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1324), + [2599] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 10), + [2601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [2603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), + [2605] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(981), + [2608] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3, 0, 44), + [2610] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3, 0, 44), + [2612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_as_pattern, 3, 0, 139), + [2614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 123), + [2616] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 4, 0, 64), + [2618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [2620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [2622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1234), + [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [2626] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1, 0, 0), + [2628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [2630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1315), + [2632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [2634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1431), + [2636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1356), + [2638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1287), + [2640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1502), + [2642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302), + [2644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1617), + [2646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, 0, 6), + [2648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 5, 0, 91), + [2650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1281), + [2652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330), + [2654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1435), + [2656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 23), + [2658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 36), + [2660] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(255), + [2663] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, 0, 24), + [2665] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 6), + [2667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 97), + [2669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), + [2671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(189), + [2674] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(1305), + [2677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341), + [2679] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 16), + [2681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), + [2683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), + [2685] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [2687] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 37), + [2689] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 37), SHIFT_REPEAT(250), + [2692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_star_pattern, 2, 0, 11), + [2694] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, 0, 54), + [2696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [2698] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2, 0, 0), + [2700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305), + [2702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_param_default, 2, 0, 113), + [2704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5, 0, 144), + [2706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, 0, 31), + [2708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 124), + [2710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 32), + [2712] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), SHIFT_REPEAT(133), + [2715] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), + [2717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), + [2719] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 0), + [2721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), + [2723] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_guard, 2, 0, 137), + [2725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1391), + [2727] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [2729] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 25), + [2731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259), + [2733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1492), + [2735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [2737] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1696), + [2740] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), + [2742] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, 0, 66), + [2744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), + [2746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(870), + [2748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1300), + [2750] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 24), + [2752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), + [2754] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), SHIFT_REPEAT(1503), + [2757] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), + [2759] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1, 0, 0), + [2761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1352), + [2763] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 0), + [2765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [2767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318), + [2769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [2771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [2773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), + [2775] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 37), SHIFT_REPEAT(417), + [2778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 37), + [2780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 50), + [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), + [2786] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), + [2788] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), SHIFT_REPEAT(1352), + [2791] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [2793] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1, 0, 7), + [2795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(466), + [2797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1463), + [2799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1527), + [2801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [2803] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 16), + [2805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(471), + [2807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), + [2809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1384), + [2811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1616), + [2813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [2815] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exception_list, 2, 0, 16), + [2817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), + [2819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1696), + [2821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2, 0, 0), + [2823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), + [2825] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 53), SHIFT_REPEAT(393), + [2828] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 53), + [2830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [2832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [2834] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(352), + [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 2, 0, 25), + [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [2843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [2845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 2, 0, 25), + [2847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [2849] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 30), + [2851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), + [2853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, 0, 0), + [2855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(268), + [2857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [2861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), + [2863] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3, 0, 0), + [2865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 87), + [2867] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3, 0, 0), + [2869] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3, 0, 0), + [2871] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2, 0, 0), + [2873] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3, 0, 0), + [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), + [2877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1028), + [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [2881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), + [2883] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(336), + [2886] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, 0, 15), + [2888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [2890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1582), + [2892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), + [2894] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 29), + [2896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), + [2898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1032), [2900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1, 0, 0), - [2902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1182), - [2904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1446), - [2906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), - [2908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), - [2910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), - [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(920), - [2914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), - [2916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [2918] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_maybe_star_pattern, 1, 0, 0), - [2920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_patterns, 1, 0, 0), - [2922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 36), - [2924] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 36), SHIFT_REPEAT(233), - [2927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), - [2929] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, 0, 15), - [2931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1658), - [2933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(702), - [2935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), - [2937] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), - [2939] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 36), SHIFT_REPEAT(282), - [2942] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 36), - [2944] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1, 0, 0), - [2946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), - [2948] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 37), - [2950] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), - [2952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), - [2954] = {.entry = {.count = 1, .reusable = true}}, SHIFT(974), - [2956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), - [2958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(981), - [2960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), - [2962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), - [2964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), - [2966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(951), - [2968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(957), - [2970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), - [2972] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1379), - [2974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(959), - [2976] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), - [2978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(960), - [2980] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), - [2982] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, 0, 45), - [2984] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), - [2986] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), SHIFT_REPEAT(1560), - [2989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1008), - [2991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), - [2993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), - [2995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), - [2997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(885), - [2999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1026), - [3001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), - [3003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), - [3005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1131), - [3007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), - [3009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), - [3011] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), - [3013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(315), - [3015] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1, 0, 0), - [3017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(895), - [3019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), - [3021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), - [3023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), - [3025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), - [3027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), - [3029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1431), - [3031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1640), - [3033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), - [3035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1314), - [3037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), - [3039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), - [3041] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), - [3043] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1028), - [3046] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 3, -1, 58), - [3048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, 0, 112), - [3050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(718), - [3052] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), - [3054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1467), - [3056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(732), - [3058] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), - [3060] = {.entry = {.count = 1, .reusable = true}}, SHIFT(711), - [3062] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), - [3064] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 2, 0, 0), - [3066] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [3068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), - [3070] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), - [3072] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1482), - [3074] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), - [3076] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), - [3078] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), - [3080] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1, 0, 0), - [3082] = {.entry = {.count = 1, .reusable = true}}, SHIFT(980), - [3084] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), - [3086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), - [3088] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(984), - [3091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), - [3093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1167), - [3095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1023), - [3097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1476), - [3099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(246), - [3101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1313), - [3103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), - [3105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(996), - [3107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1159), - [3109] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1021), - [3112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), - [3114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(878), - [3116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), - [3118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), - [3120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), - [3122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), - [3124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), - [3126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(728), - [3128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1328), - [3130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1329), - [3132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), - [3134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(731), - [3136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), - [3138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 16), - [3140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [3142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1218), - [3144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(299), - [3146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), - [3148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 73), - [3150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 73), - [3152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), - [3154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), - [3156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(928), - [3158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), - [3160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), - [3162] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1029), - [3165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, 0, 5), - [3167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 31), - [3169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), - [3171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [3173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), - [3175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [3177] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), - [3179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, 0, 97), - [3181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 3, 0, 108), - [3183] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 92), - [3185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 3, 0, 111), - [3187] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1, 0, 0), - [3189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 86), - [3191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1, 0, 0), - [3193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_positional_pattern, 1, 0, 0), - [3195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, 0, 46), - [3197] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1, 0, 0), - [3199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 85), - [3201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 38), - [3203] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1, 0, 0), - [3205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 47), - [3207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 48), - [3209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, 0, 39), - [3211] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [3213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), - [3215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), - [3217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), - [3219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_key_value_pattern, 3, 0, 62), - [3221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [3223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), - [3225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1663), - [3227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1126), - [3229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), - [3231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), - [3233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2, 0, 0), - [3235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1160), - [3237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [3239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), - [3241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 3, 0, 108), - [3243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), - [3245] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1078), - [3247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1078), - [3249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1239), - [3251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 31), - [3253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1662), - [3255] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1138), - [3257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1138), - [3259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, 0, 96), - [3261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1623), - [3263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, 0, 0), - [3265] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1124), - [3267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1124), - [3269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_keyword_pattern, 3, 0, 160), - [3271] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 67), - [3273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_double_star_pattern, 2, 0, 11), - [3275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [3277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265), - [3279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), - [3281] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), - [3283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1326), - [3285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(948), - [3287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), - [3289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [3291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), - [3293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), - [3295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), - [3297] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), - [3299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(872), - [3301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(510), - [3303] = {.entry = {.count = 1, .reusable = true}}, SHIFT(873), - [3305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [3307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1, 0, 0), - [3309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1323), - [3311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(709), - [3313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [3315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875), - [3317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), - [3319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(876), - [3321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), - [3323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [3325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), - [3327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [3329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(627), - [3331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), - [3333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), - [3335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(705), - [3337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [3339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), - [3341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [3343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1301), - [3345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5, 0, 0), - [3347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [3349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [3351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(726), - [3353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), - [3355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), - [3357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(998), - [3359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1281), - [3361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4, 0, 0), - [3363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), - [3365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(475), - [3367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), - [3369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(631), - [3371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), - [3373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1421), - [3375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1420), - [3377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), - [3379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3, 0, 0), - [3381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [3383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1004), - [3385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1217), - [3387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(921), - [3389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [3391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), - [3393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1299), - [3395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(729), - [3397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(730), - [3399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), - [3401] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2, 0, 23), - [3403] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [3405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(706), - [3407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1372), - [3409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), - [3411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1272), - [3413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(707), - [3415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [3417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1049), - [3419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(360), - [3421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), - [3423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(658), - [3425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), - [3427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(690), - [3429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(969), - [3431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1363), - [3433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(910), - [3435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), - [3437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), - [3439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(982), - [3441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1545), - [3443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), - [3445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(966), - [3447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1571), - [3449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(721), - [3451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(975), - [3453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), - [3455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), - [3457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), - [3459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1256), - [3461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(722), - [3463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947), - [3465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1371), - [3467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), - [3469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1289), - [3471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1502), - [3473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(673), - [3475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1568), - [3477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1514), - [3479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1244), - [3481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(944), - [3483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(967), - [3485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(970), - [3487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1169), - [3489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [3491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), - [3493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), - [3495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1369), - [3497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1370), - [3499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(976), - [3501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978), - [3503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), - [3505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(922), - [3507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(985), + [2902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(429), + [2904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [2906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_maybe_star_pattern, 1, 0, 0), + [2908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_patterns, 1, 0, 0), + [2910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1200), + [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1417), + [2914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), + [2916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, 0, 15), + [2918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(904), + [2920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [2922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), + [2924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [2926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337), + [2928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338), + [2930] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), + [2932] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, 0, 89), + [2934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1510), + [2936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1633), + [2938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), + [2940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1426), + [2942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1006), + [2944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), + [2946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1151), + [2948] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), + [2950] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(991), + [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1433), + [2955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 37), + [2957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 37), SHIFT_REPEAT(246), + [2960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), + [2962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), + [2964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [2966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [2968] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 38), + [2970] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), + [2972] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), SHIFT_REPEAT(1465), + [2975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(910), + [2977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), + [2979] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, 0, 46), + [2981] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(252), + [2984] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 37), + [2986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), + [2988] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), SHIFT_REPEAT(1593), + [2991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1031), + [2993] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 37), SHIFT_REPEAT(265), + [2996] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 37), + [2998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), + [3000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(928), + [3002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [3004] = {.entry = {.count = 1, .reusable = true}}, SHIFT(966), + [3006] = {.entry = {.count = 1, .reusable = true}}, SHIFT(968), + [3008] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [3010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), + [3012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(969), + [3014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1349), + [3016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(972), + [3018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [3020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(973), + [3022] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [3024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(975), + [3026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), + [3028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(976), + [3030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [3032] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), + [3034] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 16), + [3036] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1, 0, 0), + [3038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [3040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(946), + [3042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875), + [3044] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [3046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(876), + [3048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), + [3050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), + [3052] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [3054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), + [3056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [3058] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), + [3060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 2, 0, 0), + [3062] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), + [3064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229), + [3066] = {.entry = {.count = 1, .reusable = true}}, SHIFT(885), + [3068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), + [3070] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1029), + [3073] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), + [3075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1, 0, 0), + [3077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), + [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(721), + [3081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), + [3083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1034), + [3085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1033), + [3087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1706), + [3089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), + [3091] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1036), + [3094] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114), + [3096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(982), + [3098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), + [3100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), + [3102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), + [3104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), + [3106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [3108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1260), + [3110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1505), + [3112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [3114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(724), + [3116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [3118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1010), + [3120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1124), + [3122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 74), + [3124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 74), + [3126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), + [3128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), + [3130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(299), + [3132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), + [3134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), + [3136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, 0, 115), + [3138] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 116), SHIFT_REPEAT(1200), + [3141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 116), + [3143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1, 0, 0), + [3145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [3147] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1263), + [3149] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1312), + [3151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), + [3153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), + [3155] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1035), + [3158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [3160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(727), + [3162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [3164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(728), + [3166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [3168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 3, -1, 59), + [3170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(730), + [3172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [3174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(731), + [3176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [3178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1508), + [3180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(931), + [3182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), + [3184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), + [3186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [3188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_keyword_pattern, 3, 0, 164), + [3190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 32), + [3192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, 0, 0), + [3194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1263), + [3196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [3198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), + [3200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 68), + [3202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [3204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [3206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [3208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [3210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [3212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [3214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [3216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [3218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_key_value_pattern, 3, 0, 63), + [3220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2, 0, 0), + [3222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, 0, 5), + [3224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1731), + [3226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1707), + [3228] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1128), + [3230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1128), + [3232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 5, 0, 75), + [3234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [3236] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), + [3238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 5, 0, 76), + [3240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 3, 0, 111), + [3242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 3, 0, 111), + [3244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, 0, 47), + [3246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 32), + [3248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1627), + [3250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1140), + [3252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 88), + [3254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1, 0, 0), + [3256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 3, 0, 114), + [3258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [3260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), + [3262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 89), + [3264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 48), + [3266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 49), + [3268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1, 0, 0), + [3270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, 0, 99), + [3272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, 0, 100), + [3274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 39), + [3276] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1079), + [3278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1079), + [3280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1, 0, 0), + [3282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861), + [3284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 3, 0, 22), + [3286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), + [3288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(939), + [3290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1, 0, 0), + [3292] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1127), + [3294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1127), + [3296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 7, 0, 125), + [3298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, 0, 40), + [3300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_double_star_pattern, 2, 0, 11), + [3302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 95), + [3304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_positional_pattern, 1, 0, 0), + [3306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [3308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [3310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [3312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(722), + [3314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1542), + [3316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1442), + [3318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(716), + [3320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(648), + [3322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1180), + [3324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275), + [3326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [3328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495), + [3330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(714), + [3332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1605), + [3334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [3336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1148), + [3338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), + [3340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [3342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(492), + [3344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [3346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [3348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [3350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [3352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1306), + [3354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), + [3356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(930), + [3358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1293), + [3360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [3362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [3364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [3366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [3368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [3370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [3372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(987), + [3374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(993), + [3376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366), + [3378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), + [3380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), + [3382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1517), + [3384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(711), + [3386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), + [3388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1285), + [3390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [3392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), + [3394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [3396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899), + [3398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(926), + [3400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902), + [3402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), + [3404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), + [3406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), + [3408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1584), + [3410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1585), + [3412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(658), + [3414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(933), + [3416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), + [3418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(938), + [3420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1379), + [3422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(944), + [3424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), + [3426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1536), + [3428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [3430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(948), + [3432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(957), + [3434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(710), + [3436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(990), + [3438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1, 0, 0), + [3440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1009), + [3442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(360), + [3444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(932), + [3446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [3448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(718), + [3450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), + [3452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), + [3454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(670), + [3456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1403), + [3458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(951), + [3460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [3462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), + [3464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(959), + [3466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4, 0, 0), + [3468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), + [3470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3, 0, 0), + [3472] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [3474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2, 0, 25), + [3476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), + [3478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(961), + [3480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1185), + [3482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(962), + [3484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(738), + [3486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [3488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [3490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(963), + [3492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [3494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [3496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(922), + [3498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947), + [3500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1314), + [3502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), + [3504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1375), + [3506] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5, 0, 0), + [3508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), + [3510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [3512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), + [3514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651), + [3516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), + [3518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(712), + [3520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1053), + [3522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(952), + [3524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [3526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1012), + [3528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1392), + [3530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374), + [3532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1397), + [3534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1398), + [3536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [3538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [3540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1334), + [3542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(717), }; enum ts_external_scanner_symbol_identifiers { @@ -84112,10 +85783,10 @@ static const bool ts_external_scanner_states[12][EXTERNAL_TOKEN_COUNT] = { [ts_external_token__string_start] = true, }, [8] = { - [ts_external_token__string_start] = true, + [ts_external_token__template_string_start] = true, }, [9] = { - [ts_external_token__template_string_start] = true, + [ts_external_token__string_start] = true, }, [10] = { [ts_external_token__newline] = true, diff --git a/python/extractor/tsg-python/tsp/src/tree_sitter/array.h b/python/extractor/tsg-python/tsp/src/tree_sitter/array.h index e99918e5d85d..56fc8cd47099 100644 --- a/python/extractor/tsg-python/tsp/src/tree_sitter/array.h +++ b/python/extractor/tsg-python/tsp/src/tree_sitter/array.h @@ -60,7 +60,13 @@ extern "C" { /// Free any memory allocated for this array. Note that this does not free any /// memory allocated for the array's contents. -#define array_delete(self) _array__delete((self), (void *)(self)->contents, sizeof(*self)) +#define array_delete(self) \ + do { \ + if ((self)->contents) ts_free((self)->contents); \ + (self)->contents = NULL; \ + (self)->size = 0; \ + (self)->capacity = 0; \ + } while (0) /// Push a new `element` onto the end of the array. #define array_push(self, element) \ @@ -130,12 +136,11 @@ extern "C" { /// Swap one array with another #define array_swap(self, other) \ do { \ - struct Swap swapped_contents = _array__swap( \ - (void *)(self)->contents, &(self)->size, &(self)->capacity, \ - (void *)(other)->contents, &(other)->size, &(other)->capacity \ - ); \ - (self)->contents = swapped_contents.self_contents; \ - (other)->contents = swapped_contents.other_contents; \ + void *_array_swap_tmp = (void *)(self)->contents; \ + (self)->contents = (other)->contents; \ + (other)->contents = _array_swap_tmp; \ + _array__swap(&(self)->size, &(self)->capacity, \ + &(other)->size, &(other)->capacity); \ } while (0) /// Get the size of the array contents @@ -188,12 +193,6 @@ extern "C" { // The `Array` type itself was not altered as a solution in order to avoid breakage // with existing consumers (in particular, parsers with external scanners). -/// This is not what you're looking for, see `array_delete`. -static inline void _array__delete(void *self, void *contents, size_t self_size) { - if (contents) ts_free(contents); - if (self) memset(self, 0, self_size); -} - /// This is not what you're looking for, see `array_erase`. static inline void _array__erase(void* self_contents, uint32_t *size, size_t element_size, uint32_t index) { @@ -228,31 +227,15 @@ static inline void *_array__assign(void* self_contents, uint32_t *self_size, uin return new_contents; } -struct Swap { - void *self_contents; - void *other_contents; -}; - /// This is not what you're looking for, see `array_swap`. -// static inline void _array__swap(Array *self, Array *other) { -static inline struct Swap _array__swap(void *self_contents, uint32_t *self_size, uint32_t *self_capacity, - void *other_contents, uint32_t *other_size, uint32_t *other_capacity) { - void *new_self_contents = other_contents; - uint32_t new_self_size = *other_size; - uint32_t new_self_capacity = *other_capacity; - - void *new_other_contents = self_contents; - *other_size = *self_size; - *other_capacity = *self_capacity; - - *self_size = new_self_size; - *self_capacity = new_self_capacity; - - struct Swap out = { - .self_contents = new_self_contents, - .other_contents = new_other_contents, - }; - return out; +static inline void _array__swap(uint32_t *self_size, uint32_t *self_capacity, + uint32_t *other_size, uint32_t *other_capacity) { + uint32_t tmp_size = *self_size; + uint32_t tmp_capacity = *self_capacity; + *self_size = *other_size; + *self_capacity = *other_capacity; + *other_size = tmp_size; + *other_capacity = tmp_capacity; } /// This is not what you're looking for, see `array_push` or `array_grow_by`. diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 4db07a9c83e3..a6833ea8db3d 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 7.0.4 + +### Bug Fixes + +- Fixed the resolution of relative imports such as `from . import helper` inside namespace packages (directories without an `__init__.py` file), which previously did not work correctly, leading to missing flow. + +## 7.0.3 + +No user-facing changes. + +## 7.0.2 + +No user-facing changes. + ## 7.0.1 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2026-04-10-support-comprehension-unpacking.md b/python/ql/lib/change-notes/2026-04-10-support-comprehension-unpacking.md new file mode 100644 index 000000000000..d7406d0a606c --- /dev/null +++ b/python/ql/lib/change-notes/2026-04-10-support-comprehension-unpacking.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- + +- The Python extractor now supports unpacking in comprehensions, e.g. `[*x for x in nested]` (as defined in [PEP-798](https://peps.python.org/pep-0798/)) that will be part of Python 3.15. diff --git a/python/ql/lib/change-notes/2026-04-10-support-lazy-keyword.md b/python/ql/lib/change-notes/2026-04-10-support-lazy-keyword.md new file mode 100644 index 000000000000..67de168ff47e --- /dev/null +++ b/python/ql/lib/change-notes/2026-04-10-support-lazy-keyword.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- + +- The Python extractor now supports the new `lazy import ...` and `lazy from ... import ...` (as defined in [PEP-810](https://peps.python.org/pep-0810/)) that will be part of Python 3.15. diff --git a/python/ql/lib/change-notes/released/7.0.2.md b/python/ql/lib/change-notes/released/7.0.2.md new file mode 100644 index 000000000000..a96d9147b86a --- /dev/null +++ b/python/ql/lib/change-notes/released/7.0.2.md @@ -0,0 +1,3 @@ +## 7.0.2 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/7.0.3.md b/python/ql/lib/change-notes/released/7.0.3.md new file mode 100644 index 000000000000..216df7f9a555 --- /dev/null +++ b/python/ql/lib/change-notes/released/7.0.3.md @@ -0,0 +1,3 @@ +## 7.0.3 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/7.0.4.md b/python/ql/lib/change-notes/released/7.0.4.md new file mode 100644 index 000000000000..91464598a0e5 --- /dev/null +++ b/python/ql/lib/change-notes/released/7.0.4.md @@ -0,0 +1,5 @@ +## 7.0.4 + +### Bug Fixes + +- Fixed the resolution of relative imports such as `from . import helper` inside namespace packages (directories without an `__init__.py` file), which previously did not work correctly, leading to missing flow. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index a18747dd3a7a..6630ee1984ad 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.0.1 +lastReleaseVersion: 7.0.4 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 2400efca5a77..fe87c5761cfd 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 7.0.1 +version: 7.0.5-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/AstGenerated.qll b/python/ql/lib/semmle/python/AstGenerated.qll index 8805a43bec38..056e727845c9 100644 --- a/python/ql/lib/semmle/python/AstGenerated.qll +++ b/python/ql/lib/semmle/python/AstGenerated.qll @@ -698,6 +698,9 @@ class Import_ extends @py_Import, Stmt { /** Gets an alias of this import statement. */ Alias getAName() { result = this.getNames().getAnItem() } + /** Whether the lazy property of this import statement is true. */ + predicate isLazy() { py_bools(this, 2) } + override string toString() { result = "Import" } } @@ -720,6 +723,9 @@ class ImportStar_ extends @py_ImportStar, Stmt { /** Gets the module of this import * statement. */ Expr getModule() { py_exprs(result, _, this, 1) } + /** Whether the lazy property of this import * statement is true. */ + predicate isLazy() { py_bools(this, 2) } + override string toString() { result = "ImportStar" } } diff --git a/python/ql/lib/semmle/python/Import.qll b/python/ql/lib/semmle/python/Import.qll index e8a7facccad3..2f7fae955399 100644 --- a/python/ql/lib/semmle/python/Import.qll +++ b/python/ql/lib/semmle/python/Import.qll @@ -17,6 +17,10 @@ private predicate valid_module_name(string name) { exists(Module m | m.getName() = name) or exists(Builtin cmod | cmod.getClass() = Builtin::special("ModuleType") and cmod.getName() = name) + or + // Namespace packages may not have a corresponding Module entity, + // but their names are still valid for the purpose of import resolution. + name = moduleNameFromFile(any(Folder f)) } /** An artificial expression representing an import */ diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll b/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll index 6a66d241083a..764af5d9dc57 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll @@ -32,7 +32,9 @@ module Builtins { "UnicodeDecodeError", "UnicodeEncodeError", "UnicodeError", "UnicodeTranslateError", "UnicodeWarning", "UserWarning", "ValueError", "Warning", "ZeroDivisionError", // Added for compatibility - "exec" + "exec", + // Added by the `site` module (available by default unless `-S` is used) + "copyright", "credits", "exit", "quit" ] or // Built-in constants shared between Python 2 and 3 @@ -51,8 +53,8 @@ module Builtins { or // Python 2 only result in [ - "basestring", "cmp", "execfile", "file", "long", "raw_input", "reduce", "reload", "unichr", - "unicode", "xrange" + "apply", "basestring", "cmp", "execfile", "file", "long", "raw_input", "reduce", "reload", + "unichr", "unicode", "xrange" ] } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index 37eecb76d4c9..1db6c08f5f43 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -1977,3 +1977,185 @@ private module OutNodes { * `kind`. */ OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { call = result.getCall(kind) } + +/** + * Provides predicates for approximating type properties of user-defined classes + * based on their structure (method declarations, base classes). + * + * This module should _not_ be used in the call graph computation itself, as parts of it may depend + * on layers that themselves build upon the call graph (e.g. API graphs). + */ +module DuckTyping { + private import semmle.python.ApiGraphs + + /** + * Holds if `cls` or any of its resolved superclasses declares a method with the given `name`. + */ + predicate hasMethod(Class cls, string name) { + cls.getAMethod().getName() = name + or + hasMethod(getADirectSuperclass(cls), name) + } + + /** + * Holds if `cls` has a base class that cannot be resolved to a user-defined class + * and is not just `object`, meaning it may inherit methods from an unknown class. + */ + predicate hasUnresolvedBase(Class cls) { + exists(Expr base | base = cls.getABase() | + not base = classTracker(_).asExpr() and + not base = API::builtin("object").getAValueReachableFromSource().asExpr() + ) + } + + /** + * Holds if `cls` supports the container protocol, i.e. it declares + * `__contains__`, `__iter__`, or `__getitem__`. + */ + predicate isContainer(Class cls) { + hasMethod(cls, "__contains__") or + hasMethod(cls, "__iter__") or + hasMethod(cls, "__getitem__") + } + + /** + * Holds if `cls` supports the iterable protocol, i.e. it declares + * `__iter__` or `__getitem__`. + */ + predicate isIterable(Class cls) { + hasMethod(cls, "__iter__") or + hasMethod(cls, "__getitem__") + } + + /** + * Holds if `cls` supports the iterator protocol, i.e. it declares + * both `__iter__` and `__next__`. + */ + predicate isIterator(Class cls) { + hasMethod(cls, "__iter__") and + hasMethod(cls, "__next__") + } + + /** + * Holds if `cls` supports the context manager protocol, i.e. it declares + * both `__enter__` and `__exit__`. + */ + predicate isContextManager(Class cls) { + hasMethod(cls, "__enter__") and + hasMethod(cls, "__exit__") + } + + /** + * Holds if `cls` supports the descriptor protocol, i.e. it declares + * `__get__`, `__set__`, or `__delete__`. + */ + predicate isDescriptor(Class cls) { + hasMethod(cls, "__get__") or + hasMethod(cls, "__set__") or + hasMethod(cls, "__delete__") + } + + /** + * Holds if `cls` directly assigns to an attribute named `name` in its class body. + * This covers attribute assignments like `x = value`, but not method definitions. + */ + predicate declaresAttribute(Class cls, string name) { exists(getAnAttributeValue(cls, name)) } + + /** + * Gets the value expression assigned to attribute `name` directly in the class body of `cls`. + */ + Expr getAnAttributeValue(Class cls, string name) { + exists(Assign a | + a.getScope() = cls and + a.getATarget().(Name).getId() = name and + result = a.getValue() + ) + } + + /** + * Holds if `cls` is callable, i.e. it declares `__call__`. + */ + predicate isCallable(Class cls) { hasMethod(cls, "__call__") } + + /** + * Holds if `cls` supports the mapping protocol, i.e. it declares + * `__getitem__` and `keys`, or `__getitem__` and `__iter__`. + */ + predicate isMapping(Class cls) { + hasMethod(cls, "__getitem__") and + (hasMethod(cls, "keys") or hasMethod(cls, "__iter__")) + } + + /** + * Holds if `cls` is a new-style class. In Python 3, all classes are new-style. + * In Python 2, a class is new-style if it (transitively) inherits from `object`, + * or has a declared `__metaclass__`, or is in a module with a module-level + * `__metaclass__` declaration, or has an unresolved base class. + */ + predicate isNewStyle(Class cls) { + major_version() = 3 + or + major_version() = 2 and + ( + cls.getABase() = API::builtin("object").getAValueReachableFromSource().asExpr() + or + isNewStyle(getADirectSuperclass(cls)) + or + hasUnresolvedBase(cls) + or + exists(cls.getMetaClass()) + or + // Module-level __metaclass__ = type makes all classes in the module new-style + exists(Assign a | + a.getScope() = cls.getEnclosingModule() and + a.getATarget().(Name).getId() = "__metaclass__" and + a.getValue() = API::builtin("type").getAValueReachableFromSource().asExpr() + ) + ) + } + + /** + * Gets the `__init__` function that will be invoked when `cls` is constructed, + * resolved according to the MRO. + */ + Function getInit(Class cls) { result = invokedFunctionFromClassConstruction(cls, "__init__") } + + /** + * Holds if `cls` or any of its superclasses uses multiple inheritance, or + * has an unresolved base class. In these cases, our MRO approximation may + * resolve to the wrong `__init__`, so we should not flag argument mismatches. + */ + predicate hasUnreliableMro(Class cls) { + exists(Class sup | sup = getADirectSuperclass*(cls) | + exists(sup.getBase(1)) + or + hasUnresolvedBase(sup) + ) + } + + /** + * Holds if `f` overrides a method in a superclass with the same name. + */ + predicate overridesMethod(Function f) { overridesMethod(f, _, _) } + + /** + * Holds if `f` overrides `overridden` declared in `superclass`. + */ + predicate overridesMethod(Function f, Class superclass, Function overridden) { + exists(Class cls | + f.getScope() = cls and + superclass = getADirectSuperclass+(cls) and + overridden = superclass.getMethod(f.getName()) + ) + } + + /** + * Holds if `f` is a property accessor (decorated with `@property`, `@name.setter`, + * or `@name.deleter`). + */ + predicate isPropertyAccessor(Function f) { + exists(Attribute a | a = f.getADecorator() | a.getName() = "setter" or a.getName() = "deleter") + or + f.getADecorator().(Name).getId() = "property" + } +} diff --git a/python/ql/lib/semmle/python/frameworks/Eventlet.model.yml b/python/ql/lib/semmle/python/frameworks/Eventlet.model.yml new file mode 100644 index 000000000000..f60b9218819d --- /dev/null +++ b/python/ql/lib/semmle/python/frameworks/Eventlet.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/python-all + extensible: typeModel + data: + # See https://eventlet.readthedocs.io/en/latest/patching.html + - ['socket.socket', 'eventlet', 'Member[green].Member[socket].Member[socket].ReturnValue'] + # eventlet also re-exports as eventlet.socket for convenience + - ['socket.socket', 'eventlet', 'Member[socket].Member[socket].ReturnValue'] diff --git a/python/ql/lib/semmle/python/frameworks/Gevent.model.yml b/python/ql/lib/semmle/python/frameworks/Gevent.model.yml new file mode 100644 index 000000000000..974ecedd0730 --- /dev/null +++ b/python/ql/lib/semmle/python/frameworks/Gevent.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/python-all + extensible: typeModel + data: + # See https://www.gevent.org/api/gevent.socket.html + - ['socket.socket', 'gevent', 'Member[socket].Member[socket].ReturnValue'] diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml b/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml index a01bf1b40ba6..5b50dff313e7 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml @@ -27,6 +27,8 @@ extensions: extensible: sinkModel data: - ["zipfile.ZipFile","Member[extractall].Argument[0,path:]", "path-injection"] + # See https://docs.python.org/3/library/socket.html#socket.socket.bind + - ["socket.socket", "Member[bind].Argument[0,address:]", "bind-socket-all-interfaces"] - addsTo: pack: codeql/python-all @@ -184,6 +186,8 @@ extensions: pack: codeql/python-all extensible: typeModel data: + # See https://docs.python.org/3/library/socket.html#socket.socket + - ['socket.socket', 'socket', 'Member[socket].ReturnValue'] # See https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlparse - ["urllib.parse.ParseResult~Subclass", 'urllib', 'Member[parse].Member[urlparse]'] diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll index 60fe40e716d0..155fb4b7c786 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll +++ b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll @@ -10,6 +10,10 @@ * `type, path, kind` * - Summaries: * `type, path, input, output, kind` + * - Barriers: + * `type, path, kind` + * - BarrierGuards: + * `type, path, acceptingValue, kind` * - Types: * `type1, type2, path` * @@ -42,7 +46,8 @@ * 3. The `input` and `output` columns specify how data enters and leaves the element selected by the * first `(type, path)` tuple. Both strings are `.`-separated access paths * of the same syntax as the `path` column. - * 4. The `kind` column is a tag that can be referenced from QL to determine to + * 4. The `acceptingValue` column of barrier guard models specifies which branch of the guard is blocking flow. It can be "true" or "false". + * 5. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources `"remote"` indicates a default remote flow source, and for summaries * `"taint"` indicates a default additional taint step and `"value"` indicates a @@ -355,11 +360,11 @@ private predicate barrierModel(string type, string path, string kind, string mod /** Holds if a barrier guard model exists for the given parameters. */ private predicate barrierGuardModel( - string type, string path, string branch, string kind, string model + string type, string path, string acceptingValue, string kind, string model ) { // No deprecation adapter for barrier models, they were not around back then. exists(QlBuiltins::ExtensionId madId | - Extensions::barrierGuardModel(type, path, branch, kind, madId) and + Extensions::barrierGuardModel(type, path, acceptingValue, kind, madId) and model = "MaD:" + madId.toString() ) } @@ -783,16 +788,16 @@ module ModelOutput { } /** - * Holds if a barrier model contributed `barrier` with the given `kind` for the given `branch`. + * Holds if a barrier model contributed `barrier` with the given `kind` for the given `acceptingValue`. */ cached - API::Node getABarrierGuardNode(string kind, boolean branch, string model) { - exists(string type, string path, string branch_str | - branch = true and branch_str = "true" + API::Node getABarrierGuardNode(string kind, boolean acceptingValue, string model) { + exists(string type, string path, string acceptingValue_str | + acceptingValue = true and acceptingValue_str = "true" or - branch = false and branch_str = "false" + acceptingValue = false and acceptingValue_str = "false" | - barrierGuardModel(type, path, branch_str, kind, model) and + barrierGuardModel(type, path, acceptingValue_str, kind, model) and result = getNodeFromPath(type, path) ) } @@ -856,12 +861,12 @@ module ModelOutput { API::Node getABarrierNode(string kind) { result = getABarrierNode(kind, _) } /** - * Holds if an external model contributed `barrier-guard` with the given `kind` and `branch`. + * Holds if an external model contributed `barrier-guard` with the given `kind` and `acceptingValue`. * * INTERNAL: Do not use. */ - API::Node getABarrierGuardNode(string kind, boolean branch) { - result = getABarrierGuardNode(kind, branch, _) + API::Node getABarrierGuardNode(string kind, boolean acceptingValue) { + result = getABarrierGuardNode(kind, acceptingValue, _) } /** diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll index 2a644aabb95d..8d8a4f5fd880 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -33,11 +33,11 @@ extensible predicate barrierModel( * of the given `kind` and `madId` is the data extension row number. * `path` is assumed to lead to a parameter of a call (possibly `self`), and * the call is guarding the parameter. - * `branch` is either `true` or `false`, indicating which branch of the guard - * is protecting the parameter. + * `acceptingValue` is either `true` or `false`, indicating which branch of + * the guard is protecting the parameter. */ extensible predicate barrierGuardModel( - string type, string path, string branch, string kind, QlBuiltins::ExtensionId madId + string type, string path, string acceptingValue, string kind, QlBuiltins::ExtensionId madId ); /** diff --git a/python/ql/lib/semmlecode.python.dbscheme b/python/ql/lib/semmlecode.python.dbscheme index 279cbb08d387..eb5fc917c79b 100644 --- a/python/ql/lib/semmlecode.python.dbscheme +++ b/python/ql/lib/semmlecode.python.dbscheme @@ -517,6 +517,7 @@ py_extracted_version(int module : @py_Module ref, /* Import.location = 0, location */ /* Import.names = 1, alias_list */ +/* Import.is_lazy = 2, bool */ /* ImportExpr.location = 0, location */ /* ImportExpr.parenthesised = 1, bool */ @@ -526,6 +527,7 @@ py_extracted_version(int module : @py_Module ref, /* ImportStar.location = 0, location */ /* ImportStar.module = 1, expr */ +/* ImportStar.is_lazy = 2, bool */ /* ImportMember.location = 0, location */ /* ImportMember.parenthesised = 1, bool */ @@ -1127,7 +1129,7 @@ case @py_unaryop.kind of @py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; -@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; +@py_bool_parent = @py_For | @py_Function | @py_Import | @py_ImportStar | @py_Print | @py_With | @py_expr | @py_pattern; @py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; diff --git a/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/old.dbscheme b/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/old.dbscheme new file mode 100644 index 000000000000..279cbb08d387 --- /dev/null +++ b/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/old.dbscheme @@ -0,0 +1,1289 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * Run "make dbscheme" in python/extractor/ to regenerate. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- 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 +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string 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 +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- 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; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* JoinedTemplateString.location = 0, location */ +/* JoinedTemplateString.parenthesised = 1, bool */ +/* JoinedTemplateString.strings = 2, TemplateString_list */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateString.location = 0, location */ +/* TemplateString.parenthesised = 1, bool */ +/* TemplateString.prefix = 2, str */ +/* TemplateString.values = 3, expr_list */ +/* TemplateString = TemplateStringList */ + +/* TemplateStringPart.location = 0, location */ +/* TemplateStringPart.parenthesised = 1, bool */ +/* TemplateStringPart.text = 2, str */ +/* TemplateStringList = JoinedTemplateString */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_TemplateString_lists(unique int id : @py_TemplateString_list, + unique int parent : @py_JoinedTemplateString ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation +| 40 = @py_TemplateString +| 41 = @py_JoinedTemplateString +| 42 = @py_TemplateStringPart; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_TemplateString | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateString_list | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_TemplateString | @py_TemplateStringPart | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/semmlecode.python.dbscheme b/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/semmlecode.python.dbscheme new file mode 100644 index 000000000000..eb5fc917c79b --- /dev/null +++ b/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/semmlecode.python.dbscheme @@ -0,0 +1,1291 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * Run "make dbscheme" in python/extractor/ to regenerate. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- 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 +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string 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 +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- 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; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ +/* Import.is_lazy = 2, bool */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ +/* ImportStar.is_lazy = 2, bool */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* JoinedTemplateString.location = 0, location */ +/* JoinedTemplateString.parenthesised = 1, bool */ +/* JoinedTemplateString.strings = 2, TemplateString_list */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateString.location = 0, location */ +/* TemplateString.parenthesised = 1, bool */ +/* TemplateString.prefix = 2, str */ +/* TemplateString.values = 3, expr_list */ +/* TemplateString = TemplateStringList */ + +/* TemplateStringPart.location = 0, location */ +/* TemplateStringPart.parenthesised = 1, bool */ +/* TemplateStringPart.text = 2, str */ +/* TemplateStringList = JoinedTemplateString */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_TemplateString_lists(unique int id : @py_TemplateString_list, + unique int parent : @py_JoinedTemplateString ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation +| 40 = @py_TemplateString +| 41 = @py_JoinedTemplateString +| 42 = @py_TemplateStringPart; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Import | @py_ImportStar | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_TemplateString | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateString_list | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_TemplateString | @py_TemplateStringPart | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/upgrade.properties b/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/upgrade.properties new file mode 100644 index 000000000000..ba9ec633f478 --- /dev/null +++ b/python/ql/lib/upgrades/279cbb08d387ecd57ac177e87c94cfd5ca62f792/upgrade.properties @@ -0,0 +1,2 @@ +description: Add is_lazy field to Import and ImportStar for PEP 810 lazy imports +compatibility: backwards diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 46e1c23df078..d5f5269c61d9 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,22 @@ +## 1.8.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `py/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `py/jinja2/autoescape-false` and `py/reflective-xss` has been increased from 6.1 (medium) to 7.8 (high). + +### Major Analysis Improvements + +- Several quality queries have been ported away from using the legacy points-to library. This may lead to changes in alerts. + +## 1.7.11 + +No user-facing changes. + +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/python/ql/src/Classes/PropertyInOldStyleClass.ql b/python/ql/src/Classes/PropertyInOldStyleClass.ql index 2fd7b1d14cf2..4b3666067ec5 100644 --- a/python/ql/src/Classes/PropertyInOldStyleClass.ql +++ b/python/ql/src/Classes/PropertyInOldStyleClass.ql @@ -11,10 +11,14 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch -from PropertyObject prop, ClassObject cls -where cls.declaredAttribute(_) = prop and not cls.failedInference() and not cls.isNewStyle() -select prop, +from Function prop, Class cls, Name decorator +where + prop.getScope() = cls and + decorator = prop.getADecorator() and + decorator.getId() = "property" and + not DuckTyping::isNewStyle(cls) +select decorator, "Property " + prop.getName() + " will not work properly, as class " + cls.getName() + " is an old-style class." diff --git a/python/ql/src/Classes/ShouldBeContextManager.ql b/python/ql/src/Classes/ShouldBeContextManager.ql index 6aec0f0e0ab0..ee97a0e682f2 100644 --- a/python/ql/src/Classes/ShouldBeContextManager.ql +++ b/python/ql/src/Classes/ShouldBeContextManager.ql @@ -14,10 +14,12 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch -from ClassValue c -where not c.isBuiltin() and not c.isContextManager() and exists(c.declaredAttribute("__del__")) +from Class c +where + not DuckTyping::isContextManager(c) and + exists(c.getMethod("__del__")) select c, "Class " + c.getName() + " implements __del__ (presumably to release some resource). Consider making it a context manager." diff --git a/python/ql/src/Classes/SlotsInOldStyleClass.ql b/python/ql/src/Classes/SlotsInOldStyleClass.ql index 2f91a88cf64e..70a7997113e6 100644 --- a/python/ql/src/Classes/SlotsInOldStyleClass.ql +++ b/python/ql/src/Classes/SlotsInOldStyleClass.ql @@ -12,9 +12,11 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch -from ClassObject c -where not c.isNewStyle() and c.declaresAttribute("__slots__") and not c.failedInference() +from Class c +where + not DuckTyping::isNewStyle(c) and + DuckTyping::declaresAttribute(c, "__slots__") select c, "Using '__slots__' in an old style class just creates a class attribute called '__slots__'." diff --git a/python/ql/src/Classes/SuperInOldStyleClass.ql b/python/ql/src/Classes/SuperInOldStyleClass.ql index a6a272b1b3b7..bc6541052de0 100644 --- a/python/ql/src/Classes/SuperInOldStyleClass.ql +++ b/python/ql/src/Classes/SuperInOldStyleClass.ql @@ -11,14 +11,13 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch predicate uses_of_super_in_old_style_class(Call s) { - exists(Function f, ClassObject c | + exists(Function f, Class c | s.getScope() = f and - f.getScope() = c.getPyClass() and - not c.failedInference() and - not c.isNewStyle() and + f.getScope() = c and + not DuckTyping::isNewStyle(c) and s.getFunc().(Name).getId() = "super" ) } diff --git a/python/ql/src/Classes/UselessClass.ql b/python/ql/src/Classes/UselessClass.ql index 740c74bf96d9..229e42fd292f 100644 --- a/python/ql/src/Classes/UselessClass.ql +++ b/python/ql/src/Classes/UselessClass.ql @@ -13,7 +13,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch predicate fewer_than_two_public_methods(Class cls, int methods) { (methods = 0 or methods = 1) and @@ -25,13 +25,8 @@ predicate does_not_define_special_method(Class cls) { } predicate no_inheritance(Class c) { - not exists(ClassValue cls, ClassValue other | - cls.getScope() = c and - other != ClassValue::object() - | - other.getABaseType() = cls or - cls.getABaseType() = other - ) and + not exists(getADirectSubclass(c)) and + not exists(getADirectSuperclass(c)) and not exists(Expr base | base = c.getABase() | not base instanceof Name or base.(Name).getId() != "object" ) diff --git a/python/ql/src/Expressions/UseofApply.ql b/python/ql/src/Expressions/UseofApply.ql index 2012f2d93618..f1068eca837c 100644 --- a/python/ql/src/Expressions/UseofApply.ql +++ b/python/ql/src/Expressions/UseofApply.ql @@ -10,9 +10,10 @@ */ import python -private import LegacyPointsTo -private import semmle.python.types.Builtins +private import semmle.python.ApiGraphs -from CallNode call, ControlFlowNodeWithPointsTo func -where major_version() = 2 and call.getFunction() = func and func.pointsTo(Value::named("apply")) +from CallNode call +where + major_version() = 2 and + call = API::builtin("apply").getACall().asCfgNode() select call, "Call to the obsolete builtin function 'apply'." diff --git a/python/ql/src/Functions/DeprecatedSliceMethod.ql b/python/ql/src/Functions/DeprecatedSliceMethod.ql index 3e9cdb681d9a..937b3f46a4ff 100644 --- a/python/ql/src/Functions/DeprecatedSliceMethod.ql +++ b/python/ql/src/Functions/DeprecatedSliceMethod.ql @@ -10,16 +10,17 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch predicate slice_method_name(string name) { name = "__getslice__" or name = "__setslice__" or name = "__delslice__" } -from PythonFunctionValue f, string meth +from Function f, string meth where - f.getScope().isMethod() and - not f.isOverridingMethod() and + f.isMethod() and slice_method_name(meth) and - f.getName() = meth + f.getName() = meth and + not DuckTyping::overridesMethod(f) and + not DuckTyping::hasUnresolvedBase(getADirectSuperclass*(f.getScope())) select f, meth + " method has been deprecated since Python 2.0." diff --git a/python/ql/src/Imports/DeprecatedModule.ql b/python/ql/src/Imports/DeprecatedModule.ql index 3d529943fb8f..62d772313343 100644 --- a/python/ql/src/Imports/DeprecatedModule.ql +++ b/python/ql/src/Imports/DeprecatedModule.ql @@ -11,7 +11,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs /** * Holds if the module `name` was deprecated in Python version `major`.`minor`, @@ -80,7 +80,7 @@ where name = imp.getName() and deprecated_module(name, instead, _, _) and not exists(Try try, ExceptStmt except | except = try.getAHandler() | - except.getType().(ExprWithPointsTo).pointsTo(ClassValue::importError()) and + except.getType() = API::builtin("ImportError").getAValueReachableFromSource().asExpr() and except.containsInScope(imp) ) select imp, deprecation_message(name) + replacement_message(name) diff --git a/python/ql/src/Security/CVE-2018-1281/BindToAllInterfaces.ql b/python/ql/src/Security/CVE-2018-1281/BindToAllInterfaces.ql index 5e2e27b3bf40..14c17edc3591 100644 --- a/python/ql/src/Security/CVE-2018-1281/BindToAllInterfaces.ql +++ b/python/ql/src/Security/CVE-2018-1281/BindToAllInterfaces.ql @@ -2,7 +2,7 @@ * @name Binding a socket to all network interfaces * @description Binding a socket to all interfaces opens it up to traffic from any IPv4 address * and is therefore associated with security risks. - * @kind problem + * @kind path-problem * @tags security * external/cwe/cwe-200 * @problem.severity error @@ -14,7 +14,9 @@ import python import semmle.python.dataflow.new.DataFlow -import semmle.python.ApiGraphs +import semmle.python.dataflow.new.TaintTracking +private import semmle.python.frameworks.data.ModelsAsData +import BindToAllInterfacesFlow::PathGraph /** Gets a hostname that can be used to bind to all interfaces. */ private string vulnerableHostname() { @@ -26,45 +28,26 @@ private string vulnerableHostname() { ] } -/** Gets a reference to a hostname that can be used to bind to all interfaces. */ -private DataFlow::TypeTrackingNode vulnerableHostnameRef(DataFlow::TypeTracker t, string hostname) { - t.start() and - exists(StringLiteral allInterfacesStringLiteral | hostname = vulnerableHostname() | - allInterfacesStringLiteral.getText() = hostname and - result.asExpr() = allInterfacesStringLiteral - ) - or - exists(DataFlow::TypeTracker t2 | result = vulnerableHostnameRef(t2, hostname).track(t2, t)) +private module BindToAllInterfacesConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asExpr().(StringLiteral).getText() = vulnerableHostname() + } + + predicate isSink(DataFlow::Node sink) { + ModelOutput::sinkNode(sink, "bind-socket-all-interfaces") and + // Network socket addresses are tuples like (host, port), so we require + // the bind() argument to originate from a tuple expression. This excludes + // AF_UNIX sockets, which pass a plain string path to bind(). + any(DataFlow::LocalSourceNode n | n.asExpr() instanceof Tuple).flowsTo(sink) + } } -/** Gets a reference to a hostname that can be used to bind to all interfaces. */ -DataFlow::Node vulnerableHostnameRef(string hostname) { - vulnerableHostnameRef(DataFlow::TypeTracker::end(), hostname).flowsTo(result) -} - -/** Gets a reference to a tuple for which the first element is a hostname that can be used to bind to all interfaces. */ -private DataFlow::TypeTrackingNode vulnerableAddressTuple(DataFlow::TypeTracker t, string hostname) { - t.start() and - result.asExpr() = any(Tuple tup | tup.getElt(0) = vulnerableHostnameRef(hostname).asExpr()) - or - exists(DataFlow::TypeTracker t2 | result = vulnerableAddressTuple(t2, hostname).track(t2, t)) -} +private module BindToAllInterfacesFlow = TaintTracking::Global; -/** Gets a reference to a tuple for which the first element is a hostname that can be used to bind to all interfaces. */ -DataFlow::Node vulnerableAddressTuple(string hostname) { - vulnerableAddressTuple(DataFlow::TypeTracker::end(), hostname).flowsTo(result) -} - -/** - * Gets an instance of `socket.socket` using _some_ address family. - * - * See https://docs.python.org/3/library/socket.html - */ -API::Node socketInstance() { result = API::moduleImport("socket").getMember("socket").getReturn() } +private import BindToAllInterfacesFlow -from DataFlow::CallCfgNode bindCall, DataFlow::Node addressArg, string hostname -where - bindCall = socketInstance().getMember("bind").getACall() and - addressArg = bindCall.getArg(0) and - addressArg = vulnerableAddressTuple(hostname) -select bindCall.asExpr(), "'" + hostname + "' binds a socket to all interfaces." +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink.getNode(), source, sink, + "Binding a socket to all interfaces (using $@) is a security risk.", source.getNode(), + "'" + source.getNode().asExpr().(StringLiteral).getText() + "'" diff --git a/python/ql/src/Security/CWE-079/Jinja2WithoutEscaping.ql b/python/ql/src/Security/CWE-079/Jinja2WithoutEscaping.ql index 97bbb72edec9..fd03ba433a10 100644 --- a/python/ql/src/Security/CWE-079/Jinja2WithoutEscaping.ql +++ b/python/ql/src/Security/CWE-079/Jinja2WithoutEscaping.ql @@ -4,7 +4,7 @@ * cause a cross-site scripting vulnerability. * @kind problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision medium * @id py/jinja2/autoescape-false * @tags security diff --git a/python/ql/src/Security/CWE-079/ReflectedXss.ql b/python/ql/src/Security/CWE-079/ReflectedXss.ql index 11ebad00e375..286dbece126a 100644 --- a/python/ql/src/Security/CWE-079/ReflectedXss.ql +++ b/python/ql/src/Security/CWE-079/ReflectedXss.ql @@ -4,7 +4,7 @@ * allows for a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @sub-severity high * @precision high * @id py/reflective-xss diff --git a/python/ql/src/Security/CWE-117/LogInjection.ql b/python/ql/src/Security/CWE-117/LogInjection.ql index f1b72faaccbd..64b29e142e08 100644 --- a/python/ql/src/Security/CWE-117/LogInjection.ql +++ b/python/ql/src/Security/CWE-117/LogInjection.ql @@ -4,7 +4,7 @@ * insertion of forged log entries by a malicious user. * @kind path-problem * @problem.severity error - * @security-severity 7.8 + * @security-severity 6.1 * @precision medium * @id py/log-injection * @tags security diff --git a/python/ql/src/Statements/DocStrings.ql b/python/ql/src/Statements/DocStrings.ql index df7b09a963e0..d1f8c07abba1 100644 --- a/python/ql/src/Statements/DocStrings.ql +++ b/python/ql/src/Statements/DocStrings.ql @@ -17,7 +17,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch predicate needs_docstring(Scope s) { s.isPublic() and @@ -29,15 +29,13 @@ predicate needs_docstring(Scope s) { } predicate function_needs_docstring(FunctionMetrics f) { - not exists(FunctionValue fo, FunctionValue base | fo.overrides(base) and fo.getScope() = f | - not function_needs_docstring(base.getScope()) + not exists(Function base | + DuckTyping::overridesMethod(f, _, base) and + not function_needs_docstring(base) ) and f.getName() != "lambda" and (f.getNumberOfLinesOfCode() - count(f.getADecorator())) > 2 and - not exists(PythonPropertyObject p | - p.getGetter().getFunction() = f or - p.getSetter().getFunction() = f - ) + not DuckTyping::isPropertyAccessor(f) } string scope_type(Scope s) { diff --git a/python/ql/src/Statements/ModificationOfLocals.ql b/python/ql/src/Statements/ModificationOfLocals.ql index e4791a410f7a..f32ddcf78849 100644 --- a/python/ql/src/Statements/ModificationOfLocals.ql +++ b/python/ql/src/Statements/ModificationOfLocals.ql @@ -12,10 +12,10 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs -predicate originIsLocals(ControlFlowNodeWithPointsTo n) { - n.pointsTo(_, _, Value::named("locals").getACall()) +predicate originIsLocals(ControlFlowNode n) { + API::builtin("locals").getReturn().getAValueReachableFromSource().asCfgNode() = n } predicate modification_of_locals(ControlFlowNode f) { @@ -37,5 +37,8 @@ where // in module level scope `locals() == globals()` // see https://docs.python.org/3/library/functions.html#locals // FP report in https://github.com/github/codeql/issues/6674 - not a.getScope() instanceof ModuleScope + not a.getScope() instanceof Module and + // in class level scope `locals()` reflects the class namespace, + // so modifications do take effect. + not a.getScope() instanceof Class select a, "Modification of the locals() dictionary will have no effect on the local variables." diff --git a/python/ql/src/Statements/ShouldUseWithStatement.ql b/python/ql/src/Statements/ShouldUseWithStatement.ql index eb5cf9237d57..20bf053f6daa 100644 --- a/python/ql/src/Statements/ShouldUseWithStatement.ql +++ b/python/ql/src/Statements/ShouldUseWithStatement.ql @@ -13,7 +13,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch predicate calls_close(Call c) { exists(Attribute a | c.getFunc() = a and a.getName() = "close") } @@ -23,18 +23,12 @@ predicate only_stmt_in_finally(Try t, Call c) { ) } -predicate points_to_context_manager(ControlFlowNodeWithPointsTo f, ClassValue cls) { - forex(Value v | f.pointsTo(v) | v.getClass() = cls) and - cls.isContextManager() -} - -from Call close, Try t, ClassValue cls +from Call close, Try t, Class cls where only_stmt_in_finally(t, close) and calls_close(close) and - exists(ControlFlowNode f | f = close.getFunc().getAFlowNode().(AttrNode).getObject() | - points_to_context_manager(f, cls) - ) + classInstanceTracker(cls).asExpr() = close.getFunc().(Attribute).getObject() and + DuckTyping::isContextManager(cls) select close, "Instance of context-manager class $@ is closed in a finally block. Consider using 'with' statement.", cls, cls.getName() diff --git a/python/ql/src/Statements/SideEffectInAssert.ql b/python/ql/src/Statements/SideEffectInAssert.ql index 902b6c4c9c16..7ac96030c04e 100644 --- a/python/ql/src/Statements/SideEffectInAssert.ql +++ b/python/ql/src/Statements/SideEffectInAssert.ql @@ -13,7 +13,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs predicate func_with_side_effects(Expr e) { exists(string name | name = e.(Attribute).getName() or name = e.(Name).getId() | @@ -24,11 +24,11 @@ predicate func_with_side_effects(Expr e) { } predicate call_with_side_effect(Call e) { - e.getAFlowNode() = Value::named("subprocess.call").getACall() - or - e.getAFlowNode() = Value::named("subprocess.check_call").getACall() - or - e.getAFlowNode() = Value::named("subprocess.check_output").getACall() + e.getAFlowNode() = + API::moduleImport("subprocess") + .getMember(["call", "check_call", "check_output"]) + .getACall() + .asCfgNode() } predicate probable_side_effect(Expr e) { diff --git a/python/ql/src/Statements/TopLevelPrint.ql b/python/ql/src/Statements/TopLevelPrint.ql index 12095f7a484d..1896d41908e3 100644 --- a/python/ql/src/Statements/TopLevelPrint.ql +++ b/python/ql/src/Statements/TopLevelPrint.ql @@ -12,7 +12,6 @@ */ import python -private import LegacyPointsTo predicate main_eq_name(If i) { exists(Name n, StringLiteral m, Compare c | @@ -32,10 +31,19 @@ predicate is_print_stmt(Stmt s) { ) } +/** + * Holds if module `m` is likely used as a module (imported by another module), + * as opposed to being exclusively used as a script. + */ +predicate is_used_as_module(Module m) { + m.isPackageInit() + or + exists(ImportingStmt i | i.getAnImportedModuleName() = m.getName()) +} + from Stmt p where is_print_stmt(p) and - // TODO: Need to discuss how we would like to handle ModuleObject.getKind in the glorious future - exists(ModuleValue m | m.getScope() = p.getScope() and m.isUsedAsModule()) and + is_used_as_module(p.getScope()) and not exists(If i | main_eq_name(i) and i.getASubStatement().getASubStatement*() = p) select p, "Print statement may execute during import." diff --git a/python/ql/src/Statements/UnnecessaryDelete.ql b/python/ql/src/Statements/UnnecessaryDelete.ql index c7b80ecc66ac..da239f814054 100644 --- a/python/ql/src/Statements/UnnecessaryDelete.ql +++ b/python/ql/src/Statements/UnnecessaryDelete.ql @@ -13,7 +13,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs predicate isInsideLoop(AstNode node) { node.getParentNode() instanceof While @@ -33,9 +33,9 @@ where not isInsideLoop(del) and // False positive: calling `sys.exc_info` within a function results in a // reference cycle, and an explicit call to `del` helps break this cycle. - not exists(FunctionValue ex | - ex = Value::named("sys.exc_info") and - ex.getACall().getScope() = f + not exists(API::CallNode call | + call = API::moduleImport("sys").getMember("exc_info").getACall() and + call.getScope() = f ) select del, "Unnecessary deletion of local variable $@ in function $@.", e, e.toString(), f, f.getName() diff --git a/python/ql/src/Statements/UnreachableCode.ql b/python/ql/src/Statements/UnreachableCode.ql index 55582ed2f061..200e073cff6b 100644 --- a/python/ql/src/Statements/UnreachableCode.ql +++ b/python/ql/src/Statements/UnreachableCode.ql @@ -13,7 +13,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs predicate typing_import(ImportingStmt is) { exists(Module m | @@ -34,11 +34,7 @@ predicate unique_yield(Stmt s) { /** Holds if `contextlib.suppress` may be used in the same scope as `s` */ predicate suppression_in_scope(Stmt s) { exists(With w | - w.getContextExpr() - .(Call) - .getFunc() - .(ExprWithPointsTo) - .pointsTo(Value::named("contextlib.suppress")) and + w.getContextExpr() = API::moduleImport("contextlib").getMember("suppress").getACall().asExpr() and w.getScope() = s.getScope() ) } diff --git a/python/ql/src/Statements/UnusedExceptionObject.ql b/python/ql/src/Statements/UnusedExceptionObject.ql index 9a6a3650b7e6..890cdc963aca 100644 --- a/python/ql/src/Statements/UnusedExceptionObject.ql +++ b/python/ql/src/Statements/UnusedExceptionObject.ql @@ -12,11 +12,49 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.DataFlowDispatch +private import semmle.python.dataflow.new.internal.Builtins +private import semmle.python.ApiGraphs -from Call call, ClassValue ex +/** + * Holds if `cls` is a user-defined exception class, i.e. it transitively + * extends one of the builtin exception base classes. + */ +predicate isUserDefinedExceptionClass(Class cls) { + cls.getABase() = + API::builtin(["BaseException", "Exception"]).getAValueReachableFromSource().asExpr() + or + isUserDefinedExceptionClass(getADirectSuperclass(cls)) +} + +/** + * Gets the name of a builtin exception class. + */ +string getBuiltinExceptionName() { + result = Builtins::getBuiltinName() and + ( + result.matches("%Error") or + result.matches("%Exception") or + result.matches("%Warning") or + result = + ["GeneratorExit", "KeyboardInterrupt", "StopIteration", "StopAsyncIteration", "SystemExit"] + ) +} + +/** + * Holds if `call` is an instantiation of an exception class. + */ +predicate isExceptionInstantiation(Call call) { + exists(Class cls | + classTracker(cls).asExpr() = call.getFunc() and + isUserDefinedExceptionClass(cls) + ) + or + call.getFunc() = API::builtin(getBuiltinExceptionName()).getAValueReachableFromSource().asExpr() +} + +from Call call where - call.getFunc().(ExprWithPointsTo).pointsTo(ex) and - ex.getASuperType() = ClassValue::exception() and + isExceptionInstantiation(call) and exists(ExprStmt s | s.getValue() = call) select call, "Instantiating an exception, but not raising it, has no effect." diff --git a/python/ql/src/Statements/UseOfExit.ql b/python/ql/src/Statements/UseOfExit.ql index 437ff93b5371..2310a839f67b 100644 --- a/python/ql/src/Statements/UseOfExit.ql +++ b/python/ql/src/Statements/UseOfExit.ql @@ -12,10 +12,12 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs from CallNode call, string name -where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::siteQuitter(name)) +where + name = ["exit", "quit"] and + call = API::builtin(name).getACall().asCfgNode() select call, "The '" + name + "' site.Quitter object may not exist if the 'site' module is not loaded or is modified." diff --git a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql index 87900c48fc58..d252742d67c2 100644 --- a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +++ b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql @@ -12,7 +12,7 @@ */ import python -private import LegacyPointsTo +private import semmle.python.ApiGraphs import Definition predicate is_increment(Stmt s) { @@ -41,26 +41,19 @@ predicate one_item_only(For f) { ) } -predicate points_to_call_to_range(ControlFlowNode f) { - /* (x)range is a function in Py2 and a class in Py3, so we must treat it as a plain object */ - exists(Value range | - range = Value::named("range") or - range = Value::named("xrange") - | - f = range.getACall() - ) +/** Holds if `node` is a call to `range`, `xrange`, or `list(range(...))`. */ +predicate call_to_range(DataFlow::Node node) { + node = API::builtin(["range", "xrange"]).getACall() or - /* In case points-to fails due to 'from six.moves import range' or similar. */ - exists(string range | f.getNode().(Call).getFunc().(Name).getId() = range | - range = "range" or range = "xrange" - ) + /* Handle 'from six.moves import range' or similar. */ + node = API::moduleImport("six").getMember("moves").getMember(["range", "xrange"]).getACall() or /* Handle list(range(...)) and list(list(range(...))) */ - f.(CallNode).(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::list() and - points_to_call_to_range(f.(CallNode).getArg(0)) + node = API::builtin("list").getACall() and + call_to_range(node.(DataFlow::CallCfgNode).getArg(0)) } -/** Whether n is a use of a variable that is a not effectively a constant. */ +/** Whether n is a use of a variable that is not effectively a constant. */ predicate use_of_non_constant(Name n) { exists(Variable var | n.uses(var) and @@ -102,8 +95,8 @@ from For f, Variable v, string msg where f.getTarget() = v.getAnAccess() and not f.getAStmt().contains(v.getAnAccess()) and - not points_to_call_to_range(f.getIter().getAFlowNode()) and - not points_to_call_to_range(get_comp_iterable(f)) and + not call_to_range(DataFlow::exprNode(f.getIter())) and + not call_to_range(DataFlow::exprNode(get_comp_iterable(f).getNode())) and not name_acceptable_for_unused_variable(v) and not f.getScope().getName() = "genexpr" and not empty_loop(f) and diff --git a/python/ql/src/change-notes/2026-03-26-improve-bind-all-interfaces-query.md b/python/ql/src/change-notes/2026-03-26-improve-bind-all-interfaces-query.md new file mode 100644 index 000000000000..bc78b2b6f776 --- /dev/null +++ b/python/ql/src/change-notes/2026-03-26-improve-bind-all-interfaces-query.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- + +- The `py/bind-socket-all-network-interfaces` query now uses the global data-flow library, leading to better precision and more results. Also, wrappers of `socket.socket` in the `eventlet` and `gevent` libraries are now also recognized as socket binding operations. diff --git a/python/ql/src/change-notes/released/1.7.10.md b/python/ql/src/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.7.11.md b/python/ql/src/change-notes/released/1.7.11.md new file mode 100644 index 000000000000..c2790d68a54d --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.11.md @@ -0,0 +1,3 @@ +## 1.7.11 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.8.0.md b/python/ql/src/change-notes/released/1.8.0.md new file mode 100644 index 000000000000..123b4604da31 --- /dev/null +++ b/python/ql/src/change-notes/released/1.8.0.md @@ -0,0 +1,10 @@ +## 1.8.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `py/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `py/jinja2/autoescape-false` and `py/reflective-xss` has been increased from 6.1 (medium) to 7.8 (high). + +### Major Analysis Improvements + +- Several quality queries have been ported away from using the legacy points-to library. This may lead to changes in alerts. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 678da6bc37e9..dc8a37cc443d 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.8.0 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 7c1c1610d14b..aa2a2364854f 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.7.9 +version: 1.8.1-dev groups: - python - queries diff --git a/python/ql/test/2/query-tests/Classes/new-style/PropertyInOldStyleClass.expected b/python/ql/test/2/query-tests/Classes/new-style/PropertyInOldStyleClass.expected index 9fb3e582cb7b..fb508cbe859f 100644 --- a/python/ql/test/2/query-tests/Classes/new-style/PropertyInOldStyleClass.expected +++ b/python/ql/test/2/query-tests/Classes/new-style/PropertyInOldStyleClass.expected @@ -1 +1 @@ -| property_old_style.py:8:6:8:13 | Property piosc | Property piosc will not work properly, as class OldStyle is an old-style class. | +| property_old_style.py:8:6:8:13 | property | Property piosc will not work properly, as class OldStyle is an old-style class. | diff --git a/python/ql/test/2/query-tests/Classes/new-style/SlotsInOldStyleClass.expected b/python/ql/test/2/query-tests/Classes/new-style/SlotsInOldStyleClass.expected index ccad85bd3846..14d30913b93a 100644 --- a/python/ql/test/2/query-tests/Classes/new-style/SlotsInOldStyleClass.expected +++ b/python/ql/test/2/query-tests/Classes/new-style/SlotsInOldStyleClass.expected @@ -1 +1 @@ -| newstyle_test.py:4:1:4:16 | class OldStyle1 | Using '__slots__' in an old style class just creates a class attribute called '__slots__'. | +| newstyle_test.py:4:1:4:16 | Class OldStyle1 | Using '__slots__' in an old style class just creates a class attribute called '__slots__'. | diff --git a/python/ql/test/3/extractor-tests/lazy-imports/test.expected b/python/ql/test/3/extractor-tests/lazy-imports/test.expected new file mode 100644 index 000000000000..6c9aea1255e7 --- /dev/null +++ b/python/ql/test/3/extractor-tests/lazy-imports/test.expected @@ -0,0 +1,9 @@ +| 2 | Import | lazy | +| 3 | Import | lazy | +| 4 | Import | lazy | +| 5 | Import | lazy | +| 6 | Import | lazy | +| 7 | from l import * | lazy | +| 10 | Import | normal | +| 11 | Import | normal | +| 12 | from w import * | normal | diff --git a/python/ql/test/3/extractor-tests/lazy-imports/test.py b/python/ql/test/3/extractor-tests/lazy-imports/test.py new file mode 100644 index 000000000000..ecb690089118 --- /dev/null +++ b/python/ql/test/3/extractor-tests/lazy-imports/test.py @@ -0,0 +1,12 @@ +# Lazy imports (PEP 810) +lazy import a +lazy from b import c +lazy from d import e as f +lazy import g.h as i +lazy from ..j import k +lazy from l import * + +# Non-lazy imports +import x +from y import z +from w import * diff --git a/python/ql/test/3/extractor-tests/lazy-imports/test.ql b/python/ql/test/3/extractor-tests/lazy-imports/test.ql new file mode 100644 index 000000000000..9728226ed7ee --- /dev/null +++ b/python/ql/test/3/extractor-tests/lazy-imports/test.ql @@ -0,0 +1,11 @@ +import python + +string lazy(Stmt s) { + if s.(Import).isLazy() or s.(ImportStar).isLazy() then result = "lazy" else result = "normal" +} + +from Stmt s +where + s.getLocation().getFile().getShortName() = "test.py" and + (s instanceof Import or s instanceof ImportStar) +select s.getLocation().getStartLine(), s.toString(), lazy(s) diff --git a/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.expected b/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.expected new file mode 100644 index 000000000000..ec8cc352df4f --- /dev/null +++ b/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.expected @@ -0,0 +1,4 @@ +| 3 | ListComp | +| 5 | SetComp | +| 7 | DictComp | +| 9 | GeneratorExp | diff --git a/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.py b/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.py new file mode 100644 index 000000000000..44c8b1ec0baa --- /dev/null +++ b/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.py @@ -0,0 +1,12 @@ +# PEP 798: Unpacking in comprehensions + +flat_list = [*x for x in nested] + +flat_set = {*x for x in nested} + +merged = {**d for d in dicts} + +gen = (*x for x in nested) + +# Force the new parser (the old parser cannot handle lazy imports) +lazy import _pep798_parser_hint diff --git a/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.ql b/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.ql new file mode 100644 index 000000000000..23c08f720ff9 --- /dev/null +++ b/python/ql/test/3/extractor-tests/unpacking-comprehensions/test.ql @@ -0,0 +1,12 @@ +import python + +from Expr e +where + e.getLocation().getFile().getShortName() = "test.py" and + ( + e instanceof ListComp or + e instanceof SetComp or + e instanceof DictComp or + e instanceof GeneratorExp + ) +select e.getLocation().getStartLine(), e.toString() diff --git a/python/ql/test/experimental/import-resolution-namespace-relative/pkg/caller.py b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/caller.py new file mode 100644 index 000000000000..f30065eec990 --- /dev/null +++ b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/caller.py @@ -0,0 +1,5 @@ +from . import helper + +def use_relative(): + tainted = source() + helper.process(tainted) diff --git a/python/ql/test/experimental/import-resolution-namespace-relative/pkg/helper.py b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/helper.py new file mode 100644 index 000000000000..f75e99577388 --- /dev/null +++ b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/helper.py @@ -0,0 +1,5 @@ +def process(value): + sink(value) #$ flow=source + +def process2(value): + sink(value) #$ flow=source diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/taint.expected b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/sub/__init__.py similarity index 100% rename from cpp/ql/test/library-tests/dataflow/models-as-data/taint.expected rename to python/ql/test/experimental/import-resolution-namespace-relative/pkg/sub/__init__.py diff --git a/python/ql/test/experimental/import-resolution-namespace-relative/pkg/sub/caller2.py b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/sub/caller2.py new file mode 100644 index 000000000000..3afab28cd425 --- /dev/null +++ b/python/ql/test/experimental/import-resolution-namespace-relative/pkg/sub/caller2.py @@ -0,0 +1,5 @@ +from .. import helper + +def use_multi_level_relative(): + tainted = source() + helper.process2(tainted) diff --git a/python/ql/test/experimental/import-resolution-namespace-relative/test.expected b/python/ql/test/experimental/import-resolution-namespace-relative/test.expected new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/python/ql/test/experimental/import-resolution-namespace-relative/test.expected @@ -0,0 +1 @@ + diff --git a/python/ql/test/experimental/import-resolution-namespace-relative/test.ql b/python/ql/test/experimental/import-resolution-namespace-relative/test.ql new file mode 100644 index 000000000000..4f5f09a527dd --- /dev/null +++ b/python/ql/test/experimental/import-resolution-namespace-relative/test.ql @@ -0,0 +1,35 @@ +import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.dataflow.new.TaintTracking +import utils.test.InlineExpectationsTest + +private module TestConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { + node.(DataFlow::CallCfgNode).getFunction().asCfgNode().(NameNode).getId() = "source" + } + + predicate isSink(DataFlow::Node node) { + exists(DataFlow::CallCfgNode call | + call.getFunction().asCfgNode().(NameNode).getId() = "sink" and + node = call.getArg(0) + ) + } +} + +private module TestFlow = TaintTracking::Global; + +module FlowTest implements TestSig { + string getARelevantTag() { result = "flow" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(DataFlow::Node sink | + TestFlow::flow(_, sink) and + tag = "flow" and + location = sink.getLocation() and + value = "source" and + element = sink.toString() + ) + } +} + +import MakeTest diff --git a/python/ql/test/library-tests/comprehensions/Flow.expected b/python/ql/test/library-tests/comprehensions/Flow.expected index efcf64bfb9f5..8262e3e04683 100644 --- a/python/ql/test/library-tests/comprehensions/Flow.expected +++ b/python/ql/test/library-tests/comprehensions/Flow.expected @@ -36,13 +36,13 @@ | 11 | ControlFlowNode for For | 11 | Exit node for Function dictcomp | | 11 | ControlFlowNode for For | 13 | ControlFlowNode for Tuple | | 11 | Entry node for Function dictcomp | 11 | ControlFlowNode for .0 | -| 12 | ControlFlowNode for Attribute | 12 | ControlFlowNode for Tuple | +| 12 | ControlFlowNode for Attribute | 12 | ControlFlowNode for z | | 12 | ControlFlowNode for Tuple | 12 | ControlFlowNode for Yield | | 12 | ControlFlowNode for Yield | 11 | ControlFlowNode for For | | 12 | ControlFlowNode for y | 12 | ControlFlowNode for Attribute | | 12 | ControlFlowNode for z | 12 | ControlFlowNode for z() | -| 12 | ControlFlowNode for z() | 12 | ControlFlowNode for y | +| 12 | ControlFlowNode for z() | 12 | ControlFlowNode for Tuple | | 13 | ControlFlowNode for Tuple | 13 | ControlFlowNode for y | | 13 | ControlFlowNode for y | 13 | ControlFlowNode for z | -| 13 | ControlFlowNode for z | 12 | ControlFlowNode for z | +| 13 | ControlFlowNode for z | 12 | ControlFlowNode for y | | 14 | ControlFlowNode for mapping | 11 | ControlFlowNode for DictComp | diff --git a/python/ql/test/library-tests/dataflow/coverage-pep798/NormalDataflowTest.expected b/python/ql/test/library-tests/dataflow/coverage-pep798/NormalDataflowTest.expected new file mode 100644 index 000000000000..2fad7bb9a843 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/coverage-pep798/NormalDataflowTest.expected @@ -0,0 +1,2 @@ +missingAnnotationOnSink +testFailures diff --git a/python/ql/test/library-tests/dataflow/coverage-pep798/NormalDataflowTest.ql b/python/ql/test/library-tests/dataflow/coverage-pep798/NormalDataflowTest.ql new file mode 100644 index 000000000000..1e0627bfcca1 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/coverage-pep798/NormalDataflowTest.ql @@ -0,0 +1,2 @@ +import python +import utils.test.dataflow.NormalDataflowTest diff --git a/python/ql/test/library-tests/dataflow/coverage-pep798/test.py b/python/ql/test/library-tests/dataflow/coverage-pep798/test.py new file mode 100644 index 000000000000..c6f7a1b4bf1c --- /dev/null +++ b/python/ql/test/library-tests/dataflow/coverage-pep798/test.py @@ -0,0 +1,25 @@ +# PEP 798: Unpacking in comprehensions. +# These desugar to `yield from`, so flow depends on yield-from support. + +def test_star_list_comp(): + l = [[SOURCE]] + flat = [*x for x in l] + SINK(flat[0]) # $ MISSING:flow="SOURCE, l:-2 -> flat[0]" + + +def test_star_set_comp(): + l = [[SOURCE]] + flat = {*x for x in l} + SINK(flat.pop()) # $ MISSING:flow="SOURCE, l:-2 -> flat.pop()" + + +def test_star_genexp(): + l = [[SOURCE]] + g = (*x for x in l) + SINK(next(g)) # $ MISSING:flow="SOURCE, l:-2 -> next()" + + +def test_star_dictcomp(): + l = [{"key": SOURCE}] + merged = {**d for d in l} + SINK(merged["key"]) # $ MISSING:flow="SOURCE, l:-2 -> merged[..]" diff --git a/python/ql/test/query-tests/Classes/should-be-context-manager/ShouldBeContextManager.expected b/python/ql/test/query-tests/Classes/should-be-context-manager/ShouldBeContextManager.expected index 47c773804ae8..3cd6d92ff641 100644 --- a/python/ql/test/query-tests/Classes/should-be-context-manager/ShouldBeContextManager.expected +++ b/python/ql/test/query-tests/Classes/should-be-context-manager/ShouldBeContextManager.expected @@ -1,2 +1,2 @@ -| should_be_context_manager.py:3:1:3:22 | class MegaDel | Class MegaDel implements __del__ (presumably to release some resource). Consider making it a context manager. | -| should_be_context_manager.py:16:1:16:22 | class MiniDel | Class MiniDel implements __del__ (presumably to release some resource). Consider making it a context manager. | +| should_be_context_manager.py:3:1:3:22 | Class MegaDel | Class MegaDel implements __del__ (presumably to release some resource). Consider making it a context manager. | +| should_be_context_manager.py:16:1:16:22 | Class MiniDel | Class MiniDel implements __del__ (presumably to release some resource). Consider making it a context manager. | diff --git a/python/ql/test/query-tests/Functions/general/DeprecatedSliceMethod.expected b/python/ql/test/query-tests/Functions/general/DeprecatedSliceMethod.expected index 1a6df6eca47d..c9875b7a8054 100644 --- a/python/ql/test/query-tests/Functions/general/DeprecatedSliceMethod.expected +++ b/python/ql/test/query-tests/Functions/general/DeprecatedSliceMethod.expected @@ -1,3 +1,3 @@ -| functions_test.py:95:5:95:40 | Function DeprecatedSliceMethods.__getslice__ | __getslice__ method has been deprecated since Python 2.0. | -| functions_test.py:98:5:98:47 | Function DeprecatedSliceMethods.__setslice__ | __setslice__ method has been deprecated since Python 2.0. | -| functions_test.py:101:5:101:40 | Function DeprecatedSliceMethods.__delslice__ | __delslice__ method has been deprecated since Python 2.0. | +| functions_test.py:95:5:95:40 | Function __getslice__ | __getslice__ method has been deprecated since Python 2.0. | +| functions_test.py:98:5:98:47 | Function __setslice__ | __setslice__ method has been deprecated since Python 2.0. | +| functions_test.py:101:5:101:40 | Function __delslice__ | __delslice__ method has been deprecated since Python 2.0. | diff --git a/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.expected b/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.expected index 86c67af4eaef..0b96b2df6508 100644 --- a/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.expected +++ b/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.expected @@ -1,5 +1,63 @@ -| BindToAllInterfaces_test.py:5:1:5:26 | Attribute() | '0.0.0.0' binds a socket to all interfaces. | -| BindToAllInterfaces_test.py:9:1:9:18 | Attribute() | '' binds a socket to all interfaces. | -| BindToAllInterfaces_test.py:17:1:17:26 | Attribute() | '0.0.0.0' binds a socket to all interfaces. | -| BindToAllInterfaces_test.py:21:1:21:11 | Attribute() | '0.0.0.0' binds a socket to all interfaces. | -| BindToAllInterfaces_test.py:26:1:26:20 | Attribute() | '::' binds a socket to all interfaces. | +#select +| BindToAllInterfaces_test.py:5:9:5:24 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:5:9:5:17 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:5:9:5:24 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:5:9:5:17 | ControlFlowNode for StringLiteral | '0.0.0.0' | +| BindToAllInterfaces_test.py:9:9:9:16 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:9:9:9:10 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:9:9:9:16 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:9:9:9:10 | ControlFlowNode for StringLiteral | '' | +| BindToAllInterfaces_test.py:17:9:17:24 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:16:14:16:22 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:17:9:17:24 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:16:14:16:22 | ControlFlowNode for StringLiteral | '0.0.0.0' | +| BindToAllInterfaces_test.py:21:8:21:10 | ControlFlowNode for tup | BindToAllInterfaces_test.py:16:14:16:22 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:21:8:21:10 | ControlFlowNode for tup | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:16:14:16:22 | ControlFlowNode for StringLiteral | '0.0.0.0' | +| BindToAllInterfaces_test.py:26:9:26:18 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:26:9:26:12 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:26:9:26:18 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:26:9:26:12 | ControlFlowNode for StringLiteral | '::' | +| BindToAllInterfaces_test.py:39:17:39:41 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:34:26:34:34 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:39:17:39:41 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:34:26:34:34 | ControlFlowNode for StringLiteral | '0.0.0.0' | +| BindToAllInterfaces_test.py:48:9:48:18 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:46:35:46:43 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:48:9:48:18 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:46:35:46:43 | ControlFlowNode for StringLiteral | '0.0.0.0' | +| BindToAllInterfaces_test.py:53:10:53:25 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:53:10:53:18 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:53:10:53:25 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:53:10:53:18 | ControlFlowNode for StringLiteral | '0.0.0.0' | +| BindToAllInterfaces_test.py:58:10:58:25 | ControlFlowNode for Tuple | BindToAllInterfaces_test.py:58:10:58:18 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:58:10:58:25 | ControlFlowNode for Tuple | Binding a socket to all interfaces (using $@) is a security risk. | BindToAllInterfaces_test.py:58:10:58:18 | ControlFlowNode for StringLiteral | '0.0.0.0' | +edges +| BindToAllInterfaces_test.py:5:9:5:17 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:5:9:5:24 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:9:9:9:10 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:9:9:9:16 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:16:1:16:10 | ControlFlowNode for ALL_LOCALS | BindToAllInterfaces_test.py:17:9:17:24 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:16:1:16:10 | ControlFlowNode for ALL_LOCALS | BindToAllInterfaces_test.py:20:1:20:3 | ControlFlowNode for tup | provenance | | +| BindToAllInterfaces_test.py:16:14:16:22 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:16:1:16:10 | ControlFlowNode for ALL_LOCALS | provenance | | +| BindToAllInterfaces_test.py:20:1:20:3 | ControlFlowNode for tup | BindToAllInterfaces_test.py:21:8:21:10 | ControlFlowNode for tup | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:26:9:26:12 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:26:9:26:18 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:33:18:33:21 | ControlFlowNode for self [Return] [Attribute bind_addr] | BindToAllInterfaces_test.py:41:10:41:17 | ControlFlowNode for Server() [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:34:9:34:12 | [post] ControlFlowNode for self [Attribute bind_addr] | BindToAllInterfaces_test.py:33:18:33:21 | ControlFlowNode for self [Return] [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:34:26:34:34 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:34:9:34:12 | [post] ControlFlowNode for self [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:37:15:37:18 | ControlFlowNode for self [Attribute bind_addr] | BindToAllInterfaces_test.py:39:17:39:20 | ControlFlowNode for self [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:39:17:39:20 | ControlFlowNode for self [Attribute bind_addr] | BindToAllInterfaces_test.py:39:17:39:30 | ControlFlowNode for Attribute | provenance | | +| BindToAllInterfaces_test.py:39:17:39:30 | ControlFlowNode for Attribute | BindToAllInterfaces_test.py:39:17:39:41 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:41:1:41:6 | ControlFlowNode for server [Attribute bind_addr] | BindToAllInterfaces_test.py:42:1:42:6 | ControlFlowNode for server [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:41:10:41:17 | ControlFlowNode for Server() [Attribute bind_addr] | BindToAllInterfaces_test.py:41:1:41:6 | ControlFlowNode for server [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:42:1:42:6 | ControlFlowNode for server [Attribute bind_addr] | BindToAllInterfaces_test.py:37:15:37:18 | ControlFlowNode for self [Attribute bind_addr] | provenance | | +| BindToAllInterfaces_test.py:46:1:46:4 | ControlFlowNode for host | BindToAllInterfaces_test.py:48:9:48:18 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:46:8:46:44 | ControlFlowNode for Attribute() | BindToAllInterfaces_test.py:46:1:46:4 | ControlFlowNode for host | provenance | | +| BindToAllInterfaces_test.py:46:35:46:43 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:46:8:46:44 | ControlFlowNode for Attribute() | provenance | dict.get | +| BindToAllInterfaces_test.py:53:10:53:18 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:53:10:53:25 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +| BindToAllInterfaces_test.py:58:10:58:18 | ControlFlowNode for StringLiteral | BindToAllInterfaces_test.py:58:10:58:25 | ControlFlowNode for Tuple | provenance | Sink:MaD:63 | +nodes +| BindToAllInterfaces_test.py:5:9:5:17 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:5:9:5:24 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:9:9:9:10 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:9:9:9:16 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:16:1:16:10 | ControlFlowNode for ALL_LOCALS | semmle.label | ControlFlowNode for ALL_LOCALS | +| BindToAllInterfaces_test.py:16:14:16:22 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:17:9:17:24 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:20:1:20:3 | ControlFlowNode for tup | semmle.label | ControlFlowNode for tup | +| BindToAllInterfaces_test.py:21:8:21:10 | ControlFlowNode for tup | semmle.label | ControlFlowNode for tup | +| BindToAllInterfaces_test.py:26:9:26:12 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:26:9:26:18 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:33:18:33:21 | ControlFlowNode for self [Return] [Attribute bind_addr] | semmle.label | ControlFlowNode for self [Return] [Attribute bind_addr] | +| BindToAllInterfaces_test.py:34:9:34:12 | [post] ControlFlowNode for self [Attribute bind_addr] | semmle.label | [post] ControlFlowNode for self [Attribute bind_addr] | +| BindToAllInterfaces_test.py:34:26:34:34 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:37:15:37:18 | ControlFlowNode for self [Attribute bind_addr] | semmle.label | ControlFlowNode for self [Attribute bind_addr] | +| BindToAllInterfaces_test.py:39:17:39:20 | ControlFlowNode for self [Attribute bind_addr] | semmle.label | ControlFlowNode for self [Attribute bind_addr] | +| BindToAllInterfaces_test.py:39:17:39:30 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| BindToAllInterfaces_test.py:39:17:39:41 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:41:1:41:6 | ControlFlowNode for server [Attribute bind_addr] | semmle.label | ControlFlowNode for server [Attribute bind_addr] | +| BindToAllInterfaces_test.py:41:10:41:17 | ControlFlowNode for Server() [Attribute bind_addr] | semmle.label | ControlFlowNode for Server() [Attribute bind_addr] | +| BindToAllInterfaces_test.py:42:1:42:6 | ControlFlowNode for server [Attribute bind_addr] | semmle.label | ControlFlowNode for server [Attribute bind_addr] | +| BindToAllInterfaces_test.py:46:1:46:4 | ControlFlowNode for host | semmle.label | ControlFlowNode for host | +| BindToAllInterfaces_test.py:46:8:46:44 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| BindToAllInterfaces_test.py:46:35:46:43 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:48:9:48:18 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:53:10:53:18 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:53:10:53:25 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +| BindToAllInterfaces_test.py:58:10:58:18 | ControlFlowNode for StringLiteral | semmle.label | ControlFlowNode for StringLiteral | +| BindToAllInterfaces_test.py:58:10:58:25 | ControlFlowNode for Tuple | semmle.label | ControlFlowNode for Tuple | +subpaths diff --git a/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.qlref b/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.qlref index f06cc3d869dc..6396fd918634 100644 --- a/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.qlref +++ b/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces.qlref @@ -1 +1,2 @@ -Security/CVE-2018-1281/BindToAllInterfaces.ql \ No newline at end of file +query: Security/CVE-2018-1281/BindToAllInterfaces.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces_test.py b/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces_test.py index bbab44d81033..27ba6642b641 100644 --- a/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces_test.py +++ b/python/ql/test/query-tests/Security/CVE-2018-1281/BindToAllInterfaces_test.py @@ -2,25 +2,61 @@ # binds to all interfaces, insecure s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.bind(('0.0.0.0', 31137)) +s.bind(('0.0.0.0', 31137)) # $ Alert[py/bind-socket-all-network-interfaces] # binds to all interfaces, insecure s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.bind(('', 4040)) +s.bind(('', 4040)) # $ Alert[py/bind-socket-all-network-interfaces] # binds only to a dedicated interface, secure s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('84.68.10.12', 8080)) # binds to all interfaces, insecure -ALL_LOCALS = "0.0.0.0" -s.bind((ALL_LOCALS, 9090)) +ALL_LOCALS = "0.0.0.0" # $ Source +s.bind((ALL_LOCALS, 9090)) # $ Alert[py/bind-socket-all-network-interfaces] # binds to all interfaces, insecure tup = (ALL_LOCALS, 8080) -s.bind(tup) +s.bind(tup) # $ Alert[py/bind-socket-all-network-interfaces] # IPv6 s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) -s.bind(("::", 8080)) # NOT OK +s.bind(("::", 8080)) # $ Alert[py/bind-socket-all-network-interfaces] + + +# FN cases from https://github.com/github/codeql/issues/21582 + +# Address stored in a class attribute +class Server: + def __init__(self): + self.bind_addr = '0.0.0.0' # $ Source + self.port = 31137 + + def start(self): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.bind((self.bind_addr, self.port)) # $ Alert[py/bind-socket-all-network-interfaces] + +server = Server() +server.start() + +# os.environ.get with insecure default +import os +host = os.environ.get('APP_HOST', '0.0.0.0') # $ Source +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.bind((host, 8080)) # $ Alert[py/bind-socket-all-network-interfaces] + +# gevent.socket (alternative socket module) +from gevent import socket as gsocket +gs = gsocket.socket(gsocket.AF_INET, gsocket.SOCK_STREAM) +gs.bind(('0.0.0.0', 31137)) # $ Alert[py/bind-socket-all-network-interfaces] + +# eventlet.green.socket (another alternative socket module) +from eventlet.green import socket as esocket +es = esocket.socket(esocket.AF_INET, esocket.SOCK_STREAM) +es.bind(('0.0.0.0', 31137)) # $ Alert[py/bind-socket-all-network-interfaces] + +# AF_UNIX socket binding should not be flagged +us = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) +us.bind('') diff --git a/python/ql/test/query-tests/Statements/general/ShouldUseWithStatement.expected b/python/ql/test/query-tests/Statements/general/ShouldUseWithStatement.expected index d062717bbf25..50ff6cc1f914 100644 --- a/python/ql/test/query-tests/Statements/general/ShouldUseWithStatement.expected +++ b/python/ql/test/query-tests/Statements/general/ShouldUseWithStatement.expected @@ -1 +1 @@ -| test.py:168:9:168:17 | Attribute() | Instance of context-manager class $@ is closed in a finally block. Consider using 'with' statement. | test.py:151:1:151:17 | class CM | CM | +| test.py:168:9:168:17 | Attribute() | Instance of context-manager class $@ is closed in a finally block. Consider using 'with' statement. | test.py:151:1:151:17 | Class CM | CM | diff --git a/python/ql/test/query-tests/Statements/general/test.py b/python/ql/test/query-tests/Statements/general/test.py index eee63fa89e88..a5848f7c718d 100644 --- a/python/ql/test/query-tests/Statements/general/test.py +++ b/python/ql/test/query-tests/Statements/general/test.py @@ -174,3 +174,9 @@ def assert_ok(seq): # False positive. ODASA-8042. Fixed in PR #2401. class false_positive: e = (x for x in []) + +# In class-level scope `locals()` reflects the class namespace, +# so modifications do take effect. +class MyClass: + locals()['x'] = 43 # OK + y = x diff --git a/python/scripts/create-extractor-pack.sh b/python/scripts/create-extractor-pack.sh new file mode 100755 index 000000000000..ae9248f6ccfc --- /dev/null +++ b/python/scripts/create-extractor-pack.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# +# Build a local Python extractor pack from source. +# +# Usage with the CodeQL CLI (run from the repository root): +# +# codeql database create -l python -s --search-path . +# codeql test run --search-path . python/ql/test/ +# +set -eux + +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + platform="linux64" +elif [[ "$OSTYPE" == "darwin"* ]]; then + platform="osx64" +else + echo "Unknown OS" + exit 1 +fi + +cd "$(dirname "$0")/.." + +# Build the tsg-python Rust binary +(cd extractor/tsg-python && cargo build --release) +tsg_bin="extractor/tsg-python/target/release/tsg-python" + +# Generate python3src.zip from the Python extractor source. +# make_zips.py creates the zip in the source directory and then copies it to the +# given output directory. We use a temporary directory to avoid a same-file copy +# error, then move the zip back. +tmpdir=$(mktemp -d) +trap 'rm -rf "$tmpdir"' EXIT +(cd extractor && python3 make_zips.py "$tmpdir") +cp "$tmpdir/python3src.zip" extractor/python3src.zip + +# Assemble the extractor pack +rm -rf extractor-pack +mkdir -p extractor-pack/tools/${platform} + +# Root-level metadata and schema files +cp codeql-extractor.yml extractor-pack/ +cp ql/lib/semmlecode.python.dbscheme extractor-pack/ +cp ql/lib/semmlecode.python.dbscheme.stats extractor-pack/ + +# Python extractor engine files (into tools/) +cp extractor/python_tracer.py extractor-pack/tools/ +cp extractor/index.py extractor-pack/tools/ +cp extractor/setup.py extractor-pack/tools/ +cp extractor/convert_setup.py extractor-pack/tools/ +cp extractor/get_venv_lib.py extractor-pack/tools/ +cp extractor/imp.py extractor-pack/tools/ +cp extractor/LICENSE-PSF.md extractor-pack/tools/ +cp extractor/python3src.zip extractor-pack/tools/ +cp -r extractor/data extractor-pack/tools/ + +# Shell tool scripts (autobuild, pre-finalize, lgtm-scripts) +cp tools/autobuild.sh extractor-pack/tools/ +cp tools/autobuild.cmd extractor-pack/tools/ +cp tools/pre-finalize.sh extractor-pack/tools/ +cp tools/pre-finalize.cmd extractor-pack/tools/ +cp -r tools/lgtm-scripts extractor-pack/tools/ + +# Downgrades +cp -r downgrades extractor-pack/ + +# Platform-specific Rust binary +cp "${tsg_bin}" extractor-pack/tools/${platform}/tsg-python diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 8014d4349779..40cb88d396f4 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 5.1.15 + +No user-facing changes. + +## 5.1.14 + +No user-facing changes. + +## 5.1.13 + +No user-facing changes. + ## 5.1.12 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/released/5.1.13.md b/ruby/ql/lib/change-notes/released/5.1.13.md new file mode 100644 index 000000000000..34fa179534fb --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.13.md @@ -0,0 +1,3 @@ +## 5.1.13 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.14.md b/ruby/ql/lib/change-notes/released/5.1.14.md new file mode 100644 index 000000000000..5c8655337808 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.14.md @@ -0,0 +1,3 @@ +## 5.1.14 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.15.md b/ruby/ql/lib/change-notes/released/5.1.15.md new file mode 100644 index 000000000000..c3ff6293f36f --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.15.md @@ -0,0 +1,3 @@ +## 5.1.15 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 537ae582d46d..840348ed924e 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.12 +lastReleaseVersion: 5.1.15 diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll index 6a2df06b3490..c6f906a87528 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Literal.qll @@ -9,8 +9,12 @@ private import codeql.ruby.ast.internal.Scope private import codeql.ruby.controlflow.CfgNodes private import codeql.util.Numbers +bindingset[t] +pragma[inline_late] +private string getTokenValue(Ruby::Token t) { result = t.getValue() } + int parseInteger(Ruby::Integer i) { - exists(string s | s = i.getValue().toLowerCase().replaceAll("_", "") | + exists(string s | s = getTokenValue(i).toLowerCase().replaceAll("_", "") | s.charAt(0) != "0" and result = s.toInt() or @@ -38,7 +42,7 @@ class IntegerLiteralReal extends IntegerLiteralImpl, TIntegerLiteralReal { final override int getValue() { result = parseInteger(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } class IntegerLiteralSynth extends IntegerLiteralImpl, TIntegerLiteralSynth { @@ -52,7 +56,7 @@ class IntegerLiteralSynth extends IntegerLiteralImpl, TIntegerLiteralSynth { } // TODO: implement properly -float parseFloat(Ruby::Float f) { result = f.getValue().toFloat() } +float parseFloat(Ruby::Float f) { result = getTokenValue(f).toFloat() } class FloatLiteralImpl extends Expr, TFloatLiteral { private Ruby::Float g; @@ -61,7 +65,7 @@ class FloatLiteralImpl extends Expr, TFloatLiteral { final float getValue() { result = parseFloat(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } predicate isRationalValue(Ruby::Rational r, int numerator, int denominator) { @@ -71,8 +75,8 @@ predicate isRationalValue(Ruby::Rational r, int numerator, int denominator) { exists(Ruby::Float f, string regex, string before, string after | f = r.getChild() and regex = "([^.]*)\\.(.*)" and - before = f.getValue().regexpCapture(regex, 1) and - after = f.getValue().regexpCapture(regex, 2) and + before = getTokenValue(f).regexpCapture(regex, 1) and + after = getTokenValue(f).regexpCapture(regex, 2) and numerator = before.toInt() * denominator + after.toInt() and denominator = 10.pow(after.length()) ) @@ -87,14 +91,14 @@ class RationalLiteralImpl extends Expr, TRationalLiteral { isRationalValue(g, numerator, denominator) } - final override string toString() { result = g.getChild().(Ruby::Token).getValue() + "r" } + final override string toString() { result = getTokenValue(g.getChild()) + "r" } } float getComplexValue(Ruby::Complex c) { exists(int n, int d | isRationalValue(c.getChild(), n, d) and result = n.(float) / d.(float)) or exists(string s | - s = c.getChild().(Ruby::Token).getValue() and + s = getTokenValue(c.getChild()) and result = s.prefix(s.length()).toFloat() ) } @@ -109,8 +113,8 @@ class ComplexLiteralImpl extends Expr, TComplexLiteral { } final override string toString() { - result = g.getChild().(Ruby::Token).getValue() + "i" or - result = g.getChild().(Ruby::Rational).getChild().(Ruby::Token).getValue() + "ri" + result = getTokenValue(g.getChild()) + "i" or + result = getTokenValue(g.getChild().(Ruby::Rational).getChild()) + "ri" } } @@ -137,7 +141,7 @@ class TrueLiteral extends BooleanLiteralImpl, TTrueLiteral { TrueLiteral() { this = TTrueLiteral(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } final override boolean getValue() { result = true } } @@ -147,7 +151,7 @@ class FalseLiteral extends BooleanLiteralImpl, TFalseLiteral { FalseLiteral() { this = TFalseLiteral(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } final override boolean getValue() { result = false } } @@ -290,9 +294,9 @@ class RangeLiteralSynth extends RangeLiteralImpl, TRangeLiteralSynth { } private string getMethodName(MethodName::Token t) { - result = t.(Ruby::Token).getValue() + result = getTokenValue(t) or - result = t.(Ruby::Setter).getName().getValue() + "=" + result = getTokenValue(t.(Ruby::Setter).getName()) + "=" } class TokenMethodName extends Expr, TTokenMethodName { @@ -339,9 +343,9 @@ class StringTextComponentStringOrHeredocContent extends StringTextComponentImpl, final override string getValue() { result = this.getUnescapedText() } - final override string getRawTextImpl() { result = g.getValue() } + final override string getRawTextImpl() { result = getTokenValue(g) } - final private string getUnescapedText() { result = unescapeTextComponent(g.getValue()) } + final private string getUnescapedText() { result = unescapeTextComponent(getTokenValue(g)) } } private class StringTextComponentSimpleSymbol extends StringTextComponentImpl, @@ -352,7 +356,7 @@ private class StringTextComponentSimpleSymbol extends StringTextComponentImpl, StringTextComponentSimpleSymbol() { this = TStringTextComponentNonRegexpSimpleSymbol(g) } // Tree-sitter gives us value text including the colon, which we skip. - private string getSimpleSymbolValue() { result = g.getValue().suffix(1) } + private string getSimpleSymbolValue() { result = getTokenValue(g).suffix(1) } final override string getValue() { result = this.getSimpleSymbolValue() } @@ -366,9 +370,9 @@ private class StringTextComponentHashKeySymbol extends StringTextComponentImpl, StringTextComponentHashKeySymbol() { this = TStringTextComponentNonRegexpHashKeySymbol(g) } - final override string getValue() { result = g.getValue() } + final override string getValue() { result = getTokenValue(g) } - final override string getRawTextImpl() { result = g.getValue() } + final override string getRawTextImpl() { result = getTokenValue(g) } } bindingset[escaped] @@ -438,9 +442,9 @@ class StringEscapeSequenceComponentImpl extends StringComponentImpl, final override string getValue() { result = this.getUnescapedText() } - final string getRawTextImpl() { result = g.getValue() } + final string getRawTextImpl() { result = getTokenValue(g) } - final private string getUnescapedText() { result = unescapeEscapeSequence(g.getValue()) } + final private string getUnescapedText() { result = unescapeEscapeSequence(getTokenValue(g)) } final override string toString() { result = this.getRawTextImpl() } } @@ -473,10 +477,10 @@ class RegExpTextComponentImpl extends RegExpComponentImpl, TStringTextComponentR // Exclude components that are children of a free-spacing regex. // We do this because `ParseRegExp.qll` cannot handle free-spacing regexes. not this.getParent().(RegExpLiteral).hasFreeSpacingFlag() and - result = g.getValue() + result = getTokenValue(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } class RegExpEscapeSequenceComponentImpl extends RegExpComponentImpl, @@ -490,10 +494,10 @@ class RegExpEscapeSequenceComponentImpl extends RegExpComponentImpl, // Exclude components that are children of a free-spacing regex. // We do this because `ParseRegExp.qll` cannot handle free-spacing regexes. not this.getParent().(RegExpLiteral).hasFreeSpacingFlag() and - result = g.getValue() + result = getTokenValue(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } class RegExpInterpolationComponentImpl extends RegExpComponentImpl, @@ -564,7 +568,7 @@ abstract class StringlikeLiteralImpl extends Expr, TStringlikeLiteral { concat(StringComponent c, int i, string s | c = this.getComponentImpl(i) and ( - s = toGenerated(c).(Ruby::Token).getValue() + s = getTokenValue(toGenerated(c)) or not toGenerated(c) instanceof Ruby::Token and s = "#{...}" @@ -635,7 +639,7 @@ class SimpleSymbolLiteralReal extends SimpleSymbolLiteralImpl, TSimpleSymbolLite final override StringComponent getComponentImpl(int n) { n = 0 and toGenerated(result) = g } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } class SimpleSymbolLiteralSynth extends SimpleSymbolLiteralImpl, TSimpleSymbolLiteralSynth, @@ -677,7 +681,7 @@ private class HashKeySymbolLiteral extends SymbolLiteralImpl, THashKeySymbolLite final override StringComponent getComponentImpl(int n) { n = 0 and toGenerated(result) = g } - final override string toString() { result = ":" + g.getValue() } + final override string toString() { result = ":" + getTokenValue(g) } } class RegExpLiteralImpl extends StringlikeLiteralImpl, TRegExpLiteral { @@ -701,9 +705,9 @@ class CharacterLiteralImpl extends Expr, TCharacterLiteral { CharacterLiteralImpl() { this = TCharacterLiteral(g) } - final string getValue() { result = g.getValue() } + final string getValue() { result = getTokenValue(g) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } class HereDocImpl extends StringlikeLiteralImpl, THereDoc { @@ -715,5 +719,5 @@ class HereDocImpl extends StringlikeLiteralImpl, THereDoc { toGenerated(result) = getHereDocBody(g).getChild(n) } - final override string toString() { result = g.getValue() } + final override string toString() { result = getTokenValue(g) } } diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Module.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Module.qll index 3670cc5eb98e..4d65a7433464 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Module.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Module.qll @@ -639,7 +639,7 @@ private TMethodOrExpr lookupMethodOrConst(Module m, string name) { // For now, we restrict the scope of top-level declarations to their file. // This may remove some plausible targets, but also removes a lot of // implausible targets - if getNode(result).getEnclosingModule() instanceof Toplevel - then getNode(result).getFile() = m.getADeclaration().getFile() - else any() + forall(File file | file = getNode(result).getEnclosingModule().(Toplevel).getFile() | + file = m.getADeclaration().getFile() + ) } diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Scope.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Scope.qll index 9ec237012bc2..03fe2ce43504 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Scope.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Scope.qll @@ -149,11 +149,11 @@ cached private module Cached { /** Gets the enclosing scope of a node */ cached - Scope::Range scopeOf(Ruby::AstNode n) { + Scope::Range scopeOfImpl(Ruby::AstNode n) { exists(Ruby::AstNode p | p = parentOf(n) | p = result or - not p instanceof Scope::Range and result = scopeOf(p) + not p instanceof Scope::Range and result = scopeOfImpl(p) ) } @@ -163,16 +163,22 @@ private module Cached { * and synthesized scopes into account. */ cached - Scope scopeOfInclSynth(AstNode n) { + Scope scopeOfInclSynthImpl(AstNode n) { exists(AstNode p | p = parentOfInclSynth(n) | p = result or - not p instanceof Scope and result = scopeOfInclSynth(p) + not p instanceof Scope and result = scopeOfInclSynthImpl(p) ) } } -import Cached +bindingset[n] +pragma[inline_late] +Scope::Range scopeOf(Ruby::AstNode n) { result = Cached::scopeOfImpl(n) } + +bindingset[n] +pragma[inline_late] +Scope scopeOfInclSynth(AstNode n) { result = Cached::scopeOfInclSynthImpl(n) } abstract class ScopeImpl extends AstNode, TScopeType { final Scope getOuterScopeImpl() { result = scopeOfInclSynth(this) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll index 70c761e411cf..3c647f41bbbe 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll @@ -687,26 +687,30 @@ pragma[nomagic] private CfgScope getTargetInstance(DataFlowCall call, string method) { exists(boolean exact | result = lookupInstanceMethodCall(call, method, exact) and - ( - if result.(Method).isPrivate() - then - call.asCall().getReceiver().getExpr() instanceof SelfVariableAccess and - // For now, we restrict the scope of top-level declarations to their file. - // This may remove some plausible targets, but also removes a lot of - // implausible targets - ( - isToplevelMethodInFile(result, call.asCall().getFile()) or - not isToplevelMethodInFile(result, _) - ) - else any() - ) and - if result.(Method).isProtected() - then - result = lookupMethod(call.asCall().getExpr().getEnclosingModule().getModule(), method, exact) - else any() + (if result.(Method).isPrivate() then result = privateFilter(call) else any()) and + if result.(Method).isProtected() then result = protectedFilter(call, method, exact) else any() ) } +bindingset[call, result] +pragma[inline_late] +private CfgScope privateFilter(DataFlowCall call) { + call.asCall().getReceiver().getExpr() instanceof SelfVariableAccess and + // For now, we restrict the scope of top-level declarations to their file. + // This may remove some plausible targets, but also removes a lot of + // implausible targets + ( + isToplevelMethodInFile(result, call.asCall().getFile()) or + not isToplevelMethodInFile(result, _) + ) +} + +bindingset[call, method, exact, result] +pragma[inline_late] +private CfgScope protectedFilter(DataFlowCall call, string method, boolean exact) { + result = lookupMethod(call.asCall().getExpr().getEnclosingModule().getModule(), method, exact) +} + private module TrackBlockInput implements CallGraphConstruction::Simple::InputSig { class State = Block; diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 9332aa43e52b..e4bcf2537a7a 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -28,7 +28,13 @@ abstract class NodeImpl extends Node { DataFlowCallable getEnclosingCallable() { result = TCfgScope(this.getCfgScope()) } /** Do not call: use `getEnclosingCallable()` instead. */ - abstract CfgScope getCfgScope(); + abstract CfgScope getCfgScopeImpl(); + + /** Do not call: use `getEnclosingCallable()` instead. */ + pragma[inline] + final CfgScope getCfgScope() { + pragma[only_bind_into](result) = pragma[only_bind_out](this).getCfgScopeImpl() + } /** Do not call: use `getLocation()` instead. */ abstract Location getLocationImpl(); @@ -38,7 +44,7 @@ abstract class NodeImpl extends Node { } private class ExprNodeImpl extends ExprNode, NodeImpl { - override CfgScope getCfgScope() { result = this.getExprNode().getExpr().getCfgScope() } + override CfgScope getCfgScopeImpl() { result = this.getExprNode().getExpr().getCfgScope() } override Location getLocationImpl() { result = this.getExprNode().getLocation() } @@ -780,7 +786,7 @@ class SsaNode extends NodeImpl, TSsaNode { /** Holds if this node should be hidden from path explanations. */ predicate isHidden() { any() } - override CfgScope getCfgScope() { result = node.getBasicBlock().getScope() } + override CfgScope getCfgScopeImpl() { result = node.getBasicBlock().getScope() } override Location getLocationImpl() { result = node.getLocation() } @@ -827,7 +833,7 @@ class CapturedVariableNode extends NodeImpl, TCapturedVariableNode { /** Gets the captured variable represented by this node. */ VariableCapture::CapturedVariable getVariable() { result = variable } - override CfgScope getCfgScope() { result = variable.getCallable() } + override CfgScope getCfgScopeImpl() { result = variable.getCallable() } override Location getLocationImpl() { result = variable.getLocation() } @@ -849,7 +855,7 @@ class ReturningStatementNode extends NodeImpl, TReturningNode { /** Gets the expression corresponding to this node. */ CfgNodes::ReturningCfgNode getReturningNode() { result = n } - override CfgScope getCfgScope() { result = n.getScope() } + override CfgScope getCfgScopeImpl() { result = n.getScope() } override Location getLocationImpl() { result = n.getLocation() } @@ -867,7 +873,7 @@ class CaptureNode extends NodeImpl, TCaptureNode { VariableCapture::Flow::SynthesizedCaptureNode getSynthesizedCaptureNode() { result = cn } - override CfgScope getCfgScope() { result = cn.getEnclosingCallable() } + override CfgScope getCfgScopeImpl() { result = cn.getEnclosingCallable() } override Location getLocationImpl() { result = cn.getLocation() } @@ -935,7 +941,7 @@ private module ParameterNodes { ) } - override CfgScope getCfgScope() { result = parameter.getCallable() } + override CfgScope getCfgScopeImpl() { result = parameter.getCallable() } override Location getLocationImpl() { result = parameter.getLocation() } @@ -979,7 +985,7 @@ private module ParameterNodes { final override SelfVariable getSelfVariable() { result.getDeclaringScope() = method } - override CfgScope getCfgScope() { result = method } + override CfgScope getCfgScopeImpl() { result = method } override Location getLocationImpl() { result = method.getLocation() } } @@ -1001,7 +1007,7 @@ private module ParameterNodes { final override SelfVariable getSelfVariable() { result.getDeclaringScope() = t } - override CfgScope getCfgScope() { result = t } + override CfgScope getCfgScopeImpl() { result = t } override Location getLocationImpl() { result = t.getLocation() } } @@ -1028,7 +1034,7 @@ private module ParameterNodes { callable = c.asCfgScope() and pos.isLambdaSelf() } - override CfgScope getCfgScope() { result = callable } + override CfgScope getCfgScopeImpl() { result = callable } override Location getLocationImpl() { result = callable.getLocation() } @@ -1071,7 +1077,7 @@ private module ParameterNodes { c.asCfgScope() = method and pos.isBlock() } - override CfgScope getCfgScope() { result = method } + override CfgScope getCfgScopeImpl() { result = method } override Location getLocationImpl() { result = this.getParameter().getLocation() @@ -1130,7 +1136,7 @@ private module ParameterNodes { c = callable and pos.isSynthHashSplat() } - final override CfgScope getCfgScope() { result = callable.asCfgScope() } + final override CfgScope getCfgScopeImpl() { result = callable.asCfgScope() } final override DataFlowCallable getEnclosingCallable() { result = callable } @@ -1193,7 +1199,7 @@ private module ParameterNodes { ) } - final override CfgScope getCfgScope() { result = callable.asCfgScope() } + final override CfgScope getCfgScopeImpl() { result = callable.asCfgScope() } final override DataFlowCallable getEnclosingCallable() { result = callable } @@ -1240,7 +1246,7 @@ private module ParameterNodes { cs = getArrayContent(pos) } - final override CfgScope getCfgScope() { result = callable.asCfgScope() } + final override CfgScope getCfgScopeImpl() { result = callable.asCfgScope() } final override DataFlowCallable getEnclosingCallable() { result = callable } @@ -1278,7 +1284,7 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { result = this.getSummaryNode().getSummarizedCallable() } - override CfgScope getCfgScope() { none() } + override CfgScope getCfgScopeImpl() { none() } override DataFlowCallable getEnclosingCallable() { result.asLibraryCallable() = this.getSummarizedCallable() @@ -1349,7 +1355,7 @@ module ArgumentNodes { this.sourceArgumentOf(call.asCall(), pos) } - override CfgScope getCfgScope() { result = yield.getScope() } + override CfgScope getCfgScopeImpl() { result = yield.getScope() } override Location getLocationImpl() { result = yield.getLocation() } } @@ -1379,7 +1385,7 @@ module ArgumentNodes { this.sourceArgumentOf(call.asCall(), pos) } - override CfgScope getCfgScope() { result = sup.getScope() } + override CfgScope getCfgScopeImpl() { result = sup.getScope() } override Location getLocationImpl() { result = sup.getLocation() } } @@ -1415,7 +1421,7 @@ module ArgumentNodes { this.sourceArgumentOf(call.asCall(), pos) } - final override CfgScope getCfgScope() { result = call_.getExpr().getCfgScope() } + final override CfgScope getCfgScopeImpl() { result = call_.getExpr().getCfgScope() } final override Location getLocationImpl() { result = call_.getLocation() } } @@ -1563,7 +1569,7 @@ module ArgumentNodes { ) } - override CfgScope getCfgScope() { result = c.getExpr().getCfgScope() } + override CfgScope getCfgScopeImpl() { result = c.getExpr().getCfgScope() } override Location getLocationImpl() { result = c.getLocation() } @@ -2037,13 +2043,18 @@ private predicate compatibleTypesNonSymRefl(DataFlowType t1, DataFlowType t2) { } pragma[nomagic] +private predicate compatibleModules(Module m1, Module m2) { + exists(Module m3 | + m3.getAnAncestor() = m1 and + m3.getAnAncestor() = m2 + ) +} + private predicate compatibleModuleTypes(TModuleDataFlowType t1, TModuleDataFlowType t2) { - exists(Module m1, Module m2, Module m3 | + exists(Module m1, Module m2 | + compatibleModules(m1, m2) and t1 = TModuleDataFlowType(m1) and t2 = TModuleDataFlowType(m2) - | - m3.getAnAncestor() = m1 and - m3.getAnAncestor() = m2 ) } @@ -2074,7 +2085,7 @@ private module PostUpdateNodes { override ExprNode getPreUpdateNode() { e = result.getExprNode() } - override CfgScope getCfgScope() { result = e.getExpr().getCfgScope() } + override CfgScope getCfgScopeImpl() { result = e.getExpr().getCfgScope() } override Location getLocationImpl() { result = e.getLocation() } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll index 42c6286e4ea0..6275da6d98c6 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll @@ -500,6 +500,7 @@ private module Persistence { class ActiveRecordAssociation extends DataFlow::CallNode { private ActiveRecordModelClass modelClass; + pragma[nomagic] ActiveRecordAssociation() { not exists(this.asExpr().getExpr().getEnclosingMethod()) and this.asExpr().getExpr().getEnclosingModule() = modelClass and @@ -583,6 +584,14 @@ private string pluralize(string input) { exists(string stem | stem + "s" = input) and result = input } +pragma[nomagic] +private predicate activeRecordAssociationMethodCall( + DataFlow::CallNode call, ActiveRecordAssociation assoc, string model +) { + call.getReceiver().(ActiveRecordInstance).getClass() = assoc.getSourceClass() and + model = assoc.getTargetModelName() +} + /** * A call to a method generated by an ActiveRecord association. * These yield ActiveRecord collection proxies, which act like collections but @@ -595,24 +604,21 @@ private class ActiveRecordAssociationMethodCall extends DataFlow::CallNode { ActiveRecordAssociation assoc; ActiveRecordAssociationMethodCall() { - exists(string model | model = assoc.getTargetModelName() | - this.getReceiver().(ActiveRecordInstance).getClass() = assoc.getSourceClass() and + exists(string model | activeRecordAssociationMethodCall(this, assoc, model) | + assoc.isCollection() and ( - assoc.isCollection() and - ( - this.getMethodName() = pluralize(model) + ["", "="] - or - this.getMethodName() = "<<" - or - this.getMethodName() = model + ["_ids", "_ids="] - ) + this.getMethodName() = pluralize(model) + ["", "="] or - assoc.isSingular() and - ( - this.getMethodName() = model + ["", "="] or - this.getMethodName() = ["build_", "reload_"] + model or - this.getMethodName() = "create_" + model + ["!", ""] - ) + this.getMethodName() = "<<" + or + this.getMethodName() = model + ["_ids", "_ids="] + ) + or + assoc.isSingular() and + ( + this.getMethodName() = model + ["", "="] or + this.getMethodName() = ["build_", "reload_"] + model or + this.getMethodName() = "create_" + model + ["!", ""] ) ) } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/actioncontroller/Filters.qll b/ruby/ql/lib/codeql/ruby/frameworks/actioncontroller/Filters.qll index 568f99da4750..20bde03daadb 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/actioncontroller/Filters.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/actioncontroller/Filters.qll @@ -46,6 +46,10 @@ module Filters { ) } + bindingset[m, name] + pragma[inline_late] + private Method lookupMethodInlineLate(Module m, string name) { result = lookupMethod(m, name) } + /** * A call to a class method that adds or removes a filter from the callback chain. * This class exists to encapsulate common behavior between calls that @@ -140,7 +144,8 @@ module Filters { */ Callable getAFilterCallable() { result = - lookupMethod(this.getExpr().getEnclosingModule().getModule(), this.getFilterArgumentName()) + lookupMethodInlineLate(this.getExpr().getEnclosingModule().getModule(), + this.getFilterArgumentName()) } } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/actiondispatch/internal/Routing.qll b/ruby/ql/lib/codeql/ruby/frameworks/actiondispatch/internal/Routing.qll index 5910317b2c18..e6e453d449f0 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/actiondispatch/internal/Routing.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/actiondispatch/internal/Routing.qll @@ -943,6 +943,7 @@ module Routing { * Note: All-uppercase words like `CONSTANT` are not handled correctly. */ bindingset[base] + pragma[inline_late] string underscore(string base) { base = "" and result = "" or diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll index ec21ffc7475c..a29f7c2a427d 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll @@ -526,7 +526,7 @@ module Array { MethodCall mc; bindingset[this] - DeleteSummary() { mc.getMethodName() = "delete" } + DeleteSummary() { pragma[only_bind_into](mc).getMethodName() = "delete" } final override MethodCall getACallSimple() { result = mc } @@ -790,7 +790,7 @@ module Array { MethodCall mc; bindingset[this] - FetchSummary() { mc.getMethodName() = "fetch" } + FetchSummary() { pragma[only_bind_into](mc).getMethodName() = "fetch" } override MethodCall getACallSimple() { result = mc } } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll index 36d7bd2cc75d..c1a4c4d50d14 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll @@ -286,7 +286,7 @@ abstract private class FetchValuesSummary extends SummarizedCallable::Range { MethodCall mc; bindingset[this] - FetchValuesSummary() { mc.getMethodName() = "fetch_values" } + FetchValuesSummary() { pragma[only_bind_into](mc).getMethodName() = "fetch_values" } final override MethodCall getACallSimple() { result = mc } @@ -390,7 +390,7 @@ abstract private class SliceSummary extends SummarizedCallable::Range { MethodCall mc; bindingset[this] - SliceSummary() { mc.getMethodName() = "slice" } + SliceSummary() { pragma[only_bind_into](mc).getMethodName() = "slice" } final override MethodCall getACallSimple() { result = mc } } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll index 60fe40e716d0..155fb4b7c786 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll @@ -10,6 +10,10 @@ * `type, path, kind` * - Summaries: * `type, path, input, output, kind` + * - Barriers: + * `type, path, kind` + * - BarrierGuards: + * `type, path, acceptingValue, kind` * - Types: * `type1, type2, path` * @@ -42,7 +46,8 @@ * 3. The `input` and `output` columns specify how data enters and leaves the element selected by the * first `(type, path)` tuple. Both strings are `.`-separated access paths * of the same syntax as the `path` column. - * 4. The `kind` column is a tag that can be referenced from QL to determine to + * 4. The `acceptingValue` column of barrier guard models specifies which branch of the guard is blocking flow. It can be "true" or "false". + * 5. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources `"remote"` indicates a default remote flow source, and for summaries * `"taint"` indicates a default additional taint step and `"value"` indicates a @@ -355,11 +360,11 @@ private predicate barrierModel(string type, string path, string kind, string mod /** Holds if a barrier guard model exists for the given parameters. */ private predicate barrierGuardModel( - string type, string path, string branch, string kind, string model + string type, string path, string acceptingValue, string kind, string model ) { // No deprecation adapter for barrier models, they were not around back then. exists(QlBuiltins::ExtensionId madId | - Extensions::barrierGuardModel(type, path, branch, kind, madId) and + Extensions::barrierGuardModel(type, path, acceptingValue, kind, madId) and model = "MaD:" + madId.toString() ) } @@ -783,16 +788,16 @@ module ModelOutput { } /** - * Holds if a barrier model contributed `barrier` with the given `kind` for the given `branch`. + * Holds if a barrier model contributed `barrier` with the given `kind` for the given `acceptingValue`. */ cached - API::Node getABarrierGuardNode(string kind, boolean branch, string model) { - exists(string type, string path, string branch_str | - branch = true and branch_str = "true" + API::Node getABarrierGuardNode(string kind, boolean acceptingValue, string model) { + exists(string type, string path, string acceptingValue_str | + acceptingValue = true and acceptingValue_str = "true" or - branch = false and branch_str = "false" + acceptingValue = false and acceptingValue_str = "false" | - barrierGuardModel(type, path, branch_str, kind, model) and + barrierGuardModel(type, path, acceptingValue_str, kind, model) and result = getNodeFromPath(type, path) ) } @@ -856,12 +861,12 @@ module ModelOutput { API::Node getABarrierNode(string kind) { result = getABarrierNode(kind, _) } /** - * Holds if an external model contributed `barrier-guard` with the given `kind` and `branch`. + * Holds if an external model contributed `barrier-guard` with the given `kind` and `acceptingValue`. * * INTERNAL: Do not use. */ - API::Node getABarrierGuardNode(string kind, boolean branch) { - result = getABarrierGuardNode(kind, branch, _) + API::Node getABarrierGuardNode(string kind, boolean acceptingValue) { + result = getABarrierGuardNode(kind, acceptingValue, _) } /** diff --git a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll index 2a644aabb95d..8d8a4f5fd880 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -33,11 +33,11 @@ extensible predicate barrierModel( * of the given `kind` and `madId` is the data extension row number. * `path` is assumed to lead to a parameter of a call (possibly `self`), and * the call is guarding the parameter. - * `branch` is either `true` or `false`, indicating which branch of the guard - * is protecting the parameter. + * `acceptingValue` is either `true` or `false`, indicating which branch of + * the guard is protecting the parameter. */ extensible predicate barrierGuardModel( - string type, string path, string branch, string kind, QlBuiltins::ExtensionId madId + string type, string path, string acceptingValue, string kind, QlBuiltins::ExtensionId madId ); /** diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 9a0242be164f..bbf4de409093 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.12 +version: 5.1.16-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/lib/ruby.dbscheme.stats b/ruby/ql/lib/ruby.dbscheme.stats index 468bd72c7805..9995467e33e5 100644 --- a/ruby/ql/lib/ruby.dbscheme.stats +++ b/ruby/ql/lib/ruby.dbscheme.stats @@ -1,21832 +1,4 @@ - - @diagnostic_debug - 0 - - - @diagnostic_error - 0 - - - @diagnostic_info - 0 - - - @diagnostic_warning - 188 - - - @erb_comment_directive - 26 - - - @erb_directive - 1108 - - - @erb_graphql_directive - 0 - - - @erb_output_directive - 3270 - - - @erb_reserved_word - 8756 - - - @erb_template - 1508 - - - @erb_token_code - 4378 - - - @erb_token_comment - 26 - - - @erb_token_content - 4555 - - - @file - 18724 - - - @folder - 5165 - - - @location_default - 9223392 - - - @ruby_alias - 1289 - - - @ruby_alternative_pattern - 9 - - - @ruby_argument_list - 706474 - - - @ruby_array - 249320 - - - @ruby_array_pattern - 179 - - - @ruby_as_pattern - 156 - - - @ruby_assignment - 141202 - - - @ruby_bare_string - 13136 - - - @ruby_bare_symbol - 8435 - - - @ruby_begin - 2610 - - - @ruby_begin_block - 10 - - - @ruby_binary_ampersand - 630 - - - @ruby_binary_ampersandampersand - 8142 - - - @ruby_binary_and - 1189 - - - @ruby_binary_bangequal - 1434 - - - @ruby_binary_bangtilde - 176 - - - @ruby_binary_caret - 153 - - - @ruby_binary_equalequal - 33761 - - - @ruby_binary_equalequalequal - 689 - - - @ruby_binary_equaltilde - 1823 - - - @ruby_binary_langle - 1101 - - - @ruby_binary_langleequal - 431 - - - @ruby_binary_langleequalrangle - 764 - - - @ruby_binary_langlelangle - 10779 - - - @ruby_binary_minus - 2747 - - - @ruby_binary_or - 647 - - - @ruby_binary_percent - 986 - - - @ruby_binary_pipe - 1058 - - - @ruby_binary_pipepipe - 7336 - - - @ruby_binary_plus - 6593 - - - @ruby_binary_rangle - 2114 - - - @ruby_binary_rangleequal - 597 - - - @ruby_binary_ranglerangle - 259 - - - @ruby_binary_slash - 1169 - - - @ruby_binary_star - 3490 - - - @ruby_binary_starstar - 1227 - - - @ruby_block - 104143 - - - @ruby_block_argument - 6547 - - - @ruby_block_body - 103820 - - - @ruby_block_parameter - 2543 - - - @ruby_block_parameters - 25884 - - - @ruby_body_statement - 213896 - - - @ruby_break - 3414 - - - @ruby_call - 1027501 - - - @ruby_case__ - 1319 - - - @ruby_case_match - 232 - - - @ruby_chained_string - 884 - - - @ruby_class - 17441 - - - @ruby_complex - 72 - - - @ruby_conditional - 2896 - - - @ruby_delimited_symbol - 1247 - - - @ruby_destructured_left_assignment - 108 - - - @ruby_destructured_parameter - 208 - - - @ruby_do - 1675 - - - @ruby_do_block - 145534 - - - @ruby_element_reference - 82606 - - - @ruby_else - 7681 - - - @ruby_elsif - 1583 - - - @ruby_end_block - 13 - - - @ruby_ensure - 4106 - - - @ruby_exception_variable - 935 - - - @ruby_exceptions - 1904 - - - @ruby_expression_reference_pattern - 3 - - - @ruby_find_pattern - 18 - - - @ruby_for - 136 - - - @ruby_hash - 41915 - - - @ruby_hash_pattern - 73 - - - @ruby_hash_splat_argument - 1989 - - - @ruby_hash_splat_parameter - 1574 - - - @ruby_heredoc_body - 6934 - - - @ruby_if - 16164 - - - @ruby_if_guard - 9 - - - @ruby_if_modifier - 14541 - - - @ruby_in - 136 - - - @ruby_in_clause - 381 - - - @ruby_interpolation - 38493 - - - @ruby_keyword_parameter - 4763 - - - @ruby_keyword_pattern - 77 - - - @ruby_lambda - 8187 - - - @ruby_lambda_parameters - 1811 - - - @ruby_left_assignment_list - 3100 - - - @ruby_match_pattern - 31 - - - @ruby_method - 103532 - - - @ruby_method_parameters - 31208 - - - @ruby_module - 22962 - - - @ruby_next - 2020 - - - @ruby_operator_assignment_ampersandampersandequal - 118 - - - @ruby_operator_assignment_ampersandequal - 17 - - - @ruby_operator_assignment_caretequal - 6 - - - @ruby_operator_assignment_langlelangleequal - 19 - - - @ruby_operator_assignment_minusequal - 305 - - - @ruby_operator_assignment_percentequal - 26 - - - @ruby_operator_assignment_pipeequal - 164 - - - @ruby_operator_assignment_pipepipeequal - 4272 - - - @ruby_operator_assignment_plusequal - 1732 - - - @ruby_operator_assignment_ranglerangleequal - 11 - - - @ruby_operator_assignment_slashequal - 13 - - - @ruby_operator_assignment_starequal - 42 - - - @ruby_operator_assignment_starstarequal - 6 - - - @ruby_optional_parameter - 6556 - - - @ruby_pair - 254198 - - - @ruby_parenthesized_pattern - 8 - - - @ruby_parenthesized_statements - 11296 - - - @ruby_pattern - 4745 - - - @ruby_program - 18697 - - - @ruby_range_dotdot - 3690 - - - @ruby_range_dotdotdot - 1376 - - - @ruby_rational - 166 - - - @ruby_redo - 34 - - - @ruby_regex - 13680 - - - @ruby_rescue - 2299 - - - @ruby_rescue_modifier - 458 - - - @ruby_reserved_word - 3894800 - - - @ruby_rest_assignment - 414 - - - @ruby_retry - 58 - - - @ruby_return - 7979 - - - @ruby_right_assignment_list - 1280 - - - @ruby_scope_resolution - 87113 - - - @ruby_setter - 656 - - - @ruby_singleton_class - 677 - - - @ruby_singleton_method - 6325 - - - @ruby_splat_argument - 3606 - - - @ruby_splat_parameter - 3014 - - - @ruby_string__ - 490602 - - - @ruby_string_array - 4287 - - - @ruby_subshell - 359 - - - @ruby_superclass - 13806 - - - @ruby_symbol_array - 2240 - - - @ruby_test_pattern - 5 - - - @ruby_then - 22229 - - - @ruby_token_character - 440 - - - @ruby_token_class_variable - 887 - - - @ruby_token_comment - 194426 - - - @ruby_token_constant - 302373 - - - @ruby_token_empty_statement - 58 - - - @ruby_token_encoding - 1 - - - @ruby_token_escape_sequence - 80835 - - - @ruby_token_false - 17355 - - - @ruby_token_file - 1 - - - @ruby_token_float - 8689 - - - @ruby_token_forward_argument - 194 - - - @ruby_token_forward_parameter - 287 - - - @ruby_token_global_variable - 7165 - - - @ruby_token_hash_key_symbol - 246826 - - - @ruby_token_hash_splat_nil - 14 - - - @ruby_token_heredoc_beginning - 6933 - - - @ruby_token_heredoc_content - 12986 - - - @ruby_token_heredoc_end - 6934 - - - @ruby_token_identifier - 1590836 - - - @ruby_token_instance_variable - 89852 - - - @ruby_token_integer - 310358 - - - @ruby_token_line - 1 - - - @ruby_token_nil - 19333 - - - @ruby_token_operator - 878 - - - @ruby_token_self - 14094 - - - @ruby_token_simple_symbol - 267609 - - - @ruby_token_string_content - 510164 - - - @ruby_token_super - 5329 - - - @ruby_token_true - 25065 - - - @ruby_token_uninterpreted - 11 - - - @ruby_unary_bang - 5909 - - - @ruby_unary_definedquestion - 1369 - - - @ruby_unary_minus - 9830 - - - @ruby_unary_not - 172 - - - @ruby_unary_plus - 1394 - - - @ruby_unary_tilde - 97 - - - @ruby_undef - 182 - - - @ruby_unless - 2723 - - - @ruby_unless_guard - 4 - - - @ruby_unless_modifier - 3416 - - - @ruby_until - 126 - - - @ruby_until_modifier - 238 - - - @ruby_variable_reference_pattern - 5 - - - @ruby_when - 3882 - - - @ruby_while - 1413 - - - @ruby_while_modifier - 198 - - - @ruby_yield - 2450 - - - @yaml_alias_node - 0 - - - @yaml_error - 0 - - - @yaml_mapping_node - 0 - - - @yaml_scalar_node - 0 - - - @yaml_sequence_node - 0 - - - - containerparent - 23863 - - - parent - 5165 - - - child - 23863 - - - - - parent - child - - - 12 - - - 1 - 2 - 2394 - - - 2 - 3 - 968 - - - 3 - 4 - 417 - - - 4 - 5 - 295 - - - 5 - 7 - 443 - - - 7 - 14 - 403 - - - 14 - 126 - 242 - - - - - - - child - parent - - - 12 - - - 1 - 2 - 23863 - - - - - - - - - diagnostics - 188 - - - id - 188 - - - severity - 13 - - - error_tag - 13 - - - error_message - 53 - - - full_error_message - 161 - - - location - 174 - - - - - id - severity - - - 12 - - - 1 - 2 - 188 - - - - - - - id - error_tag - - - 12 - - - 1 - 2 - 188 - - - - - - - id - error_message - - - 12 - - - 1 - 2 - 188 - - - - - - - id - full_error_message - - - 12 - - - 1 - 2 - 188 - - - - - - - id - location - - - 12 - - - 1 - 2 - 188 - - - - - - - severity - id - - - 12 - - - 14 - 15 - 13 - - - - - - - severity - error_tag - - - 12 - - - 1 - 2 - 13 - - - - - - - severity - error_message - - - 12 - - - 4 - 5 - 13 - - - - - - - severity - full_error_message - - - 12 - - - 12 - 13 - 13 - - - - - - - severity - location - - - 12 - - - 13 - 14 - 13 - - - - - - - error_tag - id - - - 12 - - - 14 - 15 - 13 - - - - - - - error_tag - severity - - - 12 - - - 1 - 2 - 13 - - - - - - - error_tag - error_message - - - 12 - - - 4 - 5 - 13 - - - - - - - error_tag - full_error_message - - - 12 - - - 12 - 13 - 13 - - - - - - - error_tag - location - - - 12 - - - 13 - 14 - 13 - - - - - - - error_message - id - - - 12 - - - 1 - 2 - 26 - - - 2 - 3 - 13 - - - 10 - 11 - 13 - - - - - - - error_message - severity - - - 12 - - - 1 - 2 - 53 - - - - - - - error_message - error_tag - - - 12 - - - 1 - 2 - 53 - - - - - - - error_message - full_error_message - - - 12 - - - 1 - 2 - 26 - - - 2 - 3 - 13 - - - 8 - 9 - 13 - - - - - - - error_message - location - - - 12 - - - 1 - 2 - 26 - - - 2 - 3 - 13 - - - 10 - 11 - 13 - - - - - - - full_error_message - id - - - 12 - - - 1 - 2 - 134 - - - 2 - 3 - 26 - - - - - - - full_error_message - severity - - - 12 - - - 1 - 2 - 161 - - - - - - - full_error_message - error_tag - - - 12 - - - 1 - 2 - 161 - - - - - - - full_error_message - error_message - - - 12 - - - 1 - 2 - 161 - - - - - - - full_error_message - location - - - 12 - - - 1 - 2 - 134 - - - 2 - 3 - 26 - - - - - - - location - id - - - 12 - - - 1 - 2 - 161 - - - 2 - 3 - 13 - - - - - - - location - severity - - - 12 - - - 1 - 2 - 174 - - - - - - - location - error_tag - - - 12 - - - 1 - 2 - 174 - - - - - - - location - error_message - - - 12 - - - 1 - 2 - 161 - - - 2 - 3 - 13 - - - - - - - location - full_error_message - - - 12 - - - 1 - 2 - 161 - - - 2 - 3 - 13 - - - - - - - - - erb_ast_node_location - 22409 - - - node - 22409 - - - loc - 22407 - - - - - node - loc - - - 12 - - - 1 - 2 - 22409 - - - - - - - loc - node - - - 12 - - - 1 - 2 - 22404 - - - 2 - 3 - 2 - - - - - - - - - erb_ast_node_parent - 22069 - - - node - 22069 - - - parent - 4718 - - - parent_index - 564 - - - - - node - parent - - - 12 - - - 1 - 2 - 22069 - - - - - - - node - parent_index - - - 12 - - - 1 - 2 - 22069 - - - - - - - parent - node - - - 12 - - - 1 - 3 - 9 - - - 3 - 4 - 4494 - - - 4 - 240 - 215 - - - - - - - parent - parent_index - - - 12 - - - 1 - 3 - 9 - - - 3 - 4 - 4494 - - - 4 - 240 - 215 - - - - - - - parent_index - node - - - 12 - - - 1 - 2 - 25 - - - 2 - 3 - 33 - - - 3 - 4 - 33 - - - 4 - 5 - 122 - - - 5 - 6 - 96 - - - 6 - 8 - 40 - - - 8 - 13 - 42 - - - 13 - 20 - 44 - - - 21 - 31 - 42 - - - 35 - 55 - 44 - - - 55 - 1998 - 37 - - - - - - - parent_index - parent - - - 12 - - - 1 - 2 - 25 - - - 2 - 3 - 33 - - - 3 - 4 - 33 - - - 4 - 5 - 122 - - - 5 - 6 - 96 - - - 6 - 8 - 40 - - - 8 - 13 - 42 - - - 13 - 20 - 44 - - - 21 - 31 - 42 - - - 35 - 55 - 44 - - - 55 - 1998 - 37 - - - - - - - - - erb_comment_directive_child - 26 - - - erb_comment_directive - 26 - - - child - 26 - - - - - erb_comment_directive - child - - - 12 - - - 1 - 2 - 26 - - - - - - - child - erb_comment_directive - - - 12 - - - 1 - 2 - 26 - - - - - - - - - erb_comment_directive_def - 26 - - - id - 26 - - - - - - erb_directive_child - 1108 - - - erb_directive - 1108 - - - child - 1108 - - - - - erb_directive - child - - - 12 - - - 1 - 2 - 1108 - - - - - - - child - erb_directive - - - 12 - - - 1 - 2 - 1108 - - - - - - - - - erb_directive_def - 1108 - - - id - 1108 - - - - - - erb_graphql_directive_child - 0 - - - erb_graphql_directive - 0 - - - child - 0 - - - - - erb_graphql_directive - child - - - 12 - - - 1 - 2 - 2 - - - - - - - child - erb_graphql_directive - - - 12 - - - 1 - 2 - 2 - - - - - - - - - erb_graphql_directive_def - 0 - - - id - 0 - - - - - - erb_output_directive_child - 3270 - - - erb_output_directive - 3270 - - - child - 3270 - - - - - erb_output_directive - child - - - 12 - - - 1 - 2 - 3270 - - - - - - - child - erb_output_directive - - - 12 - - - 1 - 2 - 3270 - - - - - - - - - erb_output_directive_def - 3270 - - - id - 3270 - - - - - - erb_template_child - 8934 - - - erb_template - 340 - - - index - 564 - - - child - 8934 - - - - - erb_template - index - - - 12 - - - 1 - 3 - 9 - - - 3 - 4 - 115 - - - 4 - 7 - 21 - - - 7 - 10 - 25 - - - 10 - 14 - 28 - - - 14 - 24 - 25 - - - 24 - 33 - 25 - - - 33 - 44 - 25 - - - 45 - 64 - 25 - - - 67 - 149 - 25 - - - 200 - 240 - 9 - - - - - - - erb_template - child - - - 12 - - - 1 - 3 - 9 - - - 3 - 4 - 115 - - - 4 - 7 - 21 - - - 7 - 10 - 25 - - - 10 - 14 - 28 - - - 14 - 24 - 25 - - - 24 - 33 - 25 - - - 33 - 44 - 25 - - - 45 - 64 - 25 - - - 67 - 149 - 25 - - - 200 - 240 - 9 - - - - - - - index - erb_template - - - 12 - - - 1 - 2 - 25 - - - 2 - 3 - 33 - - - 3 - 4 - 33 - - - 4 - 5 - 122 - - - 5 - 6 - 96 - - - 6 - 8 - 40 - - - 8 - 13 - 42 - - - 13 - 20 - 44 - - - 21 - 31 - 42 - - - 35 - 55 - 44 - - - 55 - 145 - 37 - - - - - - - index - child - - - 12 - - - 1 - 2 - 25 - - - 2 - 3 - 33 - - - 3 - 4 - 33 - - - 4 - 5 - 122 - - - 5 - 6 - 96 - - - 6 - 8 - 40 - - - 8 - 13 - 42 - - - 13 - 20 - 44 - - - 21 - 31 - 42 - - - 35 - 55 - 44 - - - 55 - 145 - 37 - - - - - - - child - erb_template - - - 12 - - - 1 - 2 - 8934 - - - - - - - child - index - - - 12 - - - 1 - 2 - 8934 - - - - - - - - - erb_template_def - 1508 - - - id - 1508 - - - - - - erb_tokeninfo - 17690 - - - id - 17690 - - - kind - 7 - - - value - 4822 - - - - - id - kind - - - 12 - - - 1 - 2 - 17690 - - - - - - - id - value - - - 12 - - - 1 - 2 - 17690 - - - - - - - kind - id - - - 12 - - - 1853 - 1854 - 2 - - - 1928 - 1929 - 2 - - - 3706 - 3707 - 2 - - - - - - - kind - value - - - 12 - - - 5 - 6 - 2 - - - 984 - 985 - 2 - - - 1052 - 1053 - 2 - - - - - - - value - id - - - 12 - - - 1 - 2 - 3879 - - - 2 - 3 - 600 - - - 3 - 1786 - 342 - - - - - - - value - kind - - - 12 - - - 1 - 2 - 4822 - - - - - - - - - files - 18724 - - - id - 18724 - - - name - 18724 - - - - - id - name - - - 12 - - - 1 - 2 - 18724 - - - - - - - name - id - - - 12 - - - 1 - 2 - 18724 - - - - - - - - - folders - 5165 - - - id - 5165 - - - name - 5165 - - - - - id - name - - - 12 - - - 1 - 2 - 5165 - - - - - - - name - id - - - 12 - - - 1 - 2 - 5165 - - - - - - - - - locations_default - 9223392 - - - id - 9223392 - - - file - 18724 - - - beginLine - 31826 - - - beginColumn - 5300 - - - endLine - 31826 - - - endColumn - 5407 - - - - - id - file - - - 12 - - - 1 - 2 - 9223392 - - - - - - - id - beginLine - - - 12 - - - 1 - 2 - 9223392 - - - - - - - id - beginColumn - - - 12 - - - 1 - 2 - 9223392 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 9223392 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 9223392 - - - - - - - file - id - - - 12 - - - 1 - 32 - 1479 - - - 32 - 47 - 1412 - - - 47 - 71 - 1452 - - - 71 - 94 - 1439 - - - 94 - 119 - 1412 - - - 119 - 161 - 1412 - - - 161 - 209 - 1466 - - - 209 - 260 - 1439 - - - 260 - 333 - 1412 - - - 336 - 445 - 1425 - - - 445 - 679 - 1412 - - - 684 - 1221 - 1412 - - - 1228 - 5812 - 1412 - - - 7145 - 22841 - 134 - - - - - - - file - beginLine - - - 12 - - - 1 - 7 - 1398 - - - 7 - 10 - 1641 - - - 10 - 13 - 1479 - - - 13 - 16 - 1668 - - - 16 - 20 - 1600 - - - 20 - 25 - 1587 - - - 25 - 31 - 1573 - - - 31 - 38 - 1506 - - - 38 - 49 - 1506 - - - 49 - 69 - 1425 - - - 69 - 117 - 1425 - - - 119 - 275 - 1412 - - - 276 - 2339 - 497 - - - - - - - file - beginColumn - - - 12 - - - 1 - 16 - 1533 - - - 16 - 24 - 1493 - - - 24 - 31 - 1412 - - - 31 - 40 - 1573 - - - 40 - 46 - 1452 - - - 46 - 52 - 1533 - - - 52 - 60 - 1587 - - - 60 - 68 - 1721 - - - 68 - 76 - 1533 - - - 76 - 85 - 1452 - - - 85 - 98 - 1412 - - - 98 - 122 - 1412 - - - 122 - 357 - 605 - - - - - - - file - endLine - - - 12 - - - 1 - 7 - 1398 - - - 7 - 10 - 1600 - - - 10 - 13 - 1506 - - - 13 - 16 - 1641 - - - 16 - 20 - 1614 - - - 20 - 25 - 1600 - - - 25 - 31 - 1587 - - - 31 - 38 - 1506 - - - 38 - 49 - 1506 - - - 49 - 69 - 1425 - - - 69 - 117 - 1425 - - - 119 - 275 - 1412 - - - 276 - 2339 - 497 - - - - - - - file - endColumn - - - 12 - - - 1 - 19 - 1412 - - - 19 - 27 - 1587 - - - 27 - 35 - 1425 - - - 35 - 44 - 1452 - - - 44 - 50 - 1600 - - - 50 - 57 - 1533 - - - 57 - 64 - 1439 - - - 64 - 71 - 1412 - - - 71 - 78 - 1533 - - - 78 - 87 - 1520 - - - 87 - 99 - 1493 - - - 99 - 118 - 1425 - - - 118 - 367 - 887 - - - - - - - beginLine - id - - - 12 - - - 1 - 2 - 1600 - - - 2 - 5 - 1627 - - - 5 - 6 - 3484 - - - 6 - 10 - 2676 - - - 10 - 17 - 2878 - - - 17 - 24 - 2421 - - - 24 - 43 - 2448 - - - 43 - 78 - 2394 - - - 78 - 117 - 2394 - - - 117 - 168 - 2407 - - - 169 - 262 - 2421 - - - 262 - 703 - 2394 - - - 708 - 5999 - 2394 - - - 6159 - 10971 - 282 - - - - - - - beginLine - file - - - 12 - - - 1 - 2 - 10304 - - - 2 - 3 - 5609 - - - 3 - 7 - 2838 - - - 7 - 10 - 2663 - - - 10 - 15 - 2407 - - - 15 - 23 - 2394 - - - 23 - 58 - 2407 - - - 58 - 287 - 2394 - - - 296 - 1392 - 807 - - - - - - - beginLine - beginColumn - - - 12 - - - 1 - 2 - 1600 - - - 2 - 3 - 1520 - - - 3 - 4 - 2394 - - - 4 - 6 - 2650 - - - 6 - 8 - 1775 - - - 8 - 13 - 2811 - - - 13 - 18 - 2448 - - - 18 - 29 - 2582 - - - 29 - 44 - 2475 - - - 44 - 56 - 2582 - - - 56 - 69 - 2475 - - - 69 - 86 - 2461 - - - 86 - 113 - 2407 - - - 113 - 205 - 1641 - - - - - - - beginLine - endLine - - - 12 - - - 1 - 2 - 11299 - - - 2 - 3 - 6591 - - - 3 - 4 - 2380 - - - 4 - 5 - 1815 - - - 5 - 7 - 2623 - - - 7 - 10 - 2367 - - - 10 - 17 - 2461 - - - 17 - 240 - 2286 - - - - - - - beginLine - endColumn - - - 12 - - - 1 - 2 - 1600 - - - 2 - 4 - 1627 - - - 4 - 5 - 3537 - - - 5 - 7 - 2152 - - - 7 - 11 - 2744 - - - 11 - 15 - 2461 - - - 15 - 24 - 2394 - - - 24 - 39 - 2421 - - - 39 - 52 - 2448 - - - 52 - 65 - 2542 - - - 65 - 80 - 2555 - - - 80 - 102 - 2434 - - - 102 - 136 - 2421 - - - 136 - 209 - 484 - - - - - - - beginColumn - id - - - 12 - - - 1 - 2 - 484 - - - 2 - 3 - 605 - - - 3 - 4 - 255 - - - 4 - 5 - 269 - - - 5 - 6 - 336 - - - 6 - 9 - 457 - - - 9 - 16 - 430 - - - 16 - 43 - 403 - - - 46 - 182 - 403 - - - 184 - 794 - 403 - - - 811 - 3014 - 403 - - - 3015 - 8230 - 403 - - - 8347 - 25670 - 403 - - - 28494 - 38951 - 40 - - - - - - - beginColumn - file - - - 12 - - - 1 - 2 - 1466 - - - 2 - 3 - 605 - - - 3 - 4 - 484 - - - 4 - 9 - 417 - - - 9 - 37 - 403 - - - 37 - 118 - 403 - - - 124 - 381 - 403 - - - 381 - 728 - 403 - - - 754 - 985 - 403 - - - 996 - 1392 - 309 - - - - - - - beginColumn - beginLine - - - 12 - - - 1 - 2 - 551 - - - 2 - 3 - 712 - - - 3 - 4 - 322 - - - 4 - 5 - 363 - - - 5 - 7 - 363 - - - 7 - 13 - 457 - - - 13 - 35 - 403 - - - 35 - 103 - 403 - - - 109 - 281 - 403 - - - 286 - 583 - 403 - - - 591 - 927 - 403 - - - 935 - 1163 - 403 - - - 1198 - 1405 - 107 - - - - - - - beginColumn - endLine - - - 12 - - - 1 - 2 - 551 - - - 2 - 3 - 712 - - - 3 - 4 - 322 - - - 4 - 5 - 363 - - - 5 - 7 - 363 - - - 7 - 13 - 457 - - - 13 - 35 - 403 - - - 35 - 105 - 403 - - - 108 - 282 - 403 - - - 287 - 596 - 403 - - - 596 - 945 - 403 - - - 956 - 1202 - 403 - - - 1223 - 1412 - 107 - - - - - - - beginColumn - endColumn - - - 12 - - - 1 - 2 - 1318 - - - 2 - 3 - 712 - - - 3 - 4 - 524 - - - 4 - 6 - 443 - - - 6 - 15 - 403 - - - 15 - 37 - 403 - - - 37 - 66 - 403 - - - 66 - 98 - 403 - - - 100 - 127 - 403 - - - 128 - 180 - 282 - - - - - - - endLine - id - - - 12 - - - 1 - 3 - 322 - - - 3 - 4 - 3510 - - - 4 - 6 - 2528 - - - 6 - 9 - 2394 - - - 9 - 13 - 2488 - - - 13 - 20 - 2407 - - - 20 - 33 - 2461 - - - 33 - 64 - 2421 - - - 64 - 103 - 2421 - - - 103 - 143 - 2448 - - - 143 - 220 - 2394 - - - 220 - 446 - 2394 - - - 446 - 1691 - 2394 - - - 1717 - 10278 - 1237 - - - - - - - endLine - file - - - 12 - - - 1 - 2 - 10304 - - - 2 - 3 - 5609 - - - 3 - 7 - 2838 - - - 7 - 10 - 2663 - - - 10 - 15 - 2407 - - - 15 - 23 - 2394 - - - 23 - 58 - 2407 - - - 58 - 287 - 2394 - - - 296 - 1376 - 807 - - - - - - - endLine - beginLine - - - 12 - - - 1 - 2 - 11420 - - - 2 - 3 - 5959 - - - 3 - 4 - 2636 - - - 4 - 5 - 1654 - - - 5 - 7 - 2650 - - - 7 - 10 - 2407 - - - 10 - 17 - 2394 - - - 17 - 34 - 2434 - - - 34 - 43 - 269 - - - - - - - endLine - beginColumn - - - 12 - - - 1 - 3 - 1614 - - - 3 - 4 - 3497 - - - 4 - 6 - 2824 - - - 6 - 8 - 1694 - - - 8 - 12 - 2502 - - - 12 - 17 - 2771 - - - 17 - 28 - 2421 - - - 28 - 42 - 2448 - - - 42 - 55 - 2650 - - - 55 - 67 - 2407 - - - 67 - 82 - 2434 - - - 82 - 108 - 2461 - - - 108 - 204 - 2098 - - - - - - - endLine - endColumn - - - 12 - - - 1 - 2 - 1587 - - - 2 - 3 - 1520 - - - 3 - 4 - 2421 - - - 4 - 6 - 2650 - - - 6 - 8 - 1748 - - - 8 - 13 - 2851 - - - 13 - 18 - 2448 - - - 18 - 30 - 2488 - - - 30 - 45 - 2448 - - - 45 - 58 - 2542 - - - 58 - 71 - 2421 - - - 71 - 86 - 2407 - - - 86 - 113 - 2394 - - - 113 - 209 - 1896 - - - - - - - endColumn - id - - - 12 - - - 1 - 2 - 417 - - - 2 - 3 - 484 - - - 3 - 5 - 457 - - - 5 - 6 - 174 - - - 6 - 8 - 470 - - - 8 - 12 - 417 - - - 12 - 24 - 417 - - - 24 - 72 - 417 - - - 76 - 277 - 417 - - - 278 - 1206 - 417 - - - 1227 - 3859 - 417 - - - 3977 - 8618 - 417 - - - 9094 - 11251 - 417 - - - 11548 - 19740 - 67 - - - - - - - endColumn - file - - - 12 - - - 1 - 2 - 1479 - - - 2 - 3 - 578 - - - 3 - 4 - 538 - - - 4 - 8 - 417 - - - 8 - 29 - 417 - - - 35 - 115 - 417 - - - 115 - 399 - 417 - - - 427 - 798 - 417 - - - 805 - 1038 - 417 - - - 1039 - 1359 - 309 - - - - - - - endColumn - beginLine - - - 12 - - - 1 - 2 - 591 - - - 2 - 3 - 645 - - - 3 - 4 - 336 - - - 4 - 6 - 470 - - - 6 - 9 - 470 - - - 9 - 17 - 443 - - - 17 - 47 - 417 - - - 51 - 153 - 417 - - - 153 - 387 - 417 - - - 390 - 717 - 417 - - - 730 - 1059 - 417 - - - 1062 - 1404 - 363 - - - - - - - endColumn - beginColumn - - - 12 - - - 1 - 2 - 928 - - - 2 - 3 - 390 - - - 3 - 4 - 497 - - - 4 - 5 - 363 - - - 5 - 7 - 363 - - - 7 - 14 - 443 - - - 15 - 33 - 470 - - - 33 - 49 - 417 - - - 49 - 64 - 430 - - - 65 - 81 - 417 - - - 81 - 96 - 457 - - - 97 - 109 - 228 - - - - - - - endColumn - endLine - - - 12 - - - 1 - 2 - 591 - - - 2 - 3 - 659 - - - 3 - 4 - 336 - - - 4 - 6 - 457 - - - 6 - 9 - 470 - - - 9 - 16 - 417 - - - 16 - 43 - 430 - - - 45 - 151 - 430 - - - 161 - 379 - 417 - - - 384 - 712 - 417 - - - 729 - 1046 - 417 - - - 1049 - 1397 - 363 - - - - - - - - - ruby_alias_def - 1289 - - - id - 1289 - - - alias - 1289 - - - name - 1289 - - - - - id - alias - - - 12 - - - 1 - 2 - 1289 - - - - - - - id - name - - - 12 - - - 1 - 2 - 1289 - - - - - - - alias - id - - - 12 - - - 1 - 2 - 1289 - - - - - - - alias - name - - - 12 - - - 1 - 2 - 1289 - - - - - - - name - id - - - 12 - - - 1 - 2 - 1289 - - - - - - - name - alias - - - 12 - - - 1 - 2 - 1289 - - - - - - - - - ruby_alternative_pattern_alternatives - 23 - - - ruby_alternative_pattern - 9 - - - index - 4 - - - alternatives - 23 - - - - - ruby_alternative_pattern - index - - - 12 - - - 2 - 3 - 6 - - - 3 - 4 - 1 - - - 4 - 5 - 2 - - - - - - - ruby_alternative_pattern - alternatives - - - 12 - - - 2 - 3 - 6 - - - 3 - 4 - 1 - - - 4 - 5 - 2 - - - - - - - index - ruby_alternative_pattern - - - 12 - - - 2 - 3 - 1 - - - 3 - 4 - 1 - - - 9 - 10 - 2 - - - - - - - index - alternatives - - - 12 - - - 2 - 3 - 1 - - - 3 - 4 - 1 - - - 9 - 10 - 2 - - - - - - - alternatives - ruby_alternative_pattern - - - 12 - - - 1 - 2 - 23 - - - - - - - alternatives - index - - - 12 - - - 1 - 2 - 23 - - - - - - - - - ruby_alternative_pattern_def - 9 - - - id - 9 - - - - - - ruby_argument_list_child - 879410 - - - ruby_argument_list - 706205 - - - index - 443 - - - child - 879410 - - - - - ruby_argument_list - index - - - 12 - - - 1 - 2 - 596855 - - - 2 - 3 - 68483 - - - 3 - 34 - 40866 - - - - - - - ruby_argument_list - child - - - 12 - - - 1 - 2 - 596855 - - - 2 - 3 - 68483 - - - 3 - 34 - 40866 - - - - - - - index - ruby_argument_list - - - 12 - - - 1 - 2 - 147 - - - 2 - 3 - 40 - - - 3 - 7 - 40 - - - 7 - 11 - 40 - - - 11 - 21 - 40 - - - 23 - 45 - 40 - - - 56 - 385 - 40 - - - 963 - 8130 - 40 - - - 52499 - 52500 - 13 - - - - - - - index - child - - - 12 - - - 1 - 2 - 147 - - - 2 - 3 - 40 - - - 3 - 7 - 40 - - - 7 - 11 - 40 - - - 11 - 21 - 40 - - - 23 - 45 - 40 - - - 56 - 385 - 40 - - - 963 - 8130 - 40 - - - 52499 - 52500 - 13 - - - - - - - child - ruby_argument_list - - - 12 - - - 1 - 2 - 879410 - - - - - - - child - index - - - 12 - - - 1 - 2 - 879410 - - - - - - - - - ruby_argument_list_def - 706474 - - - id - 706474 - - - - - - ruby_array_child - 708919 - - - ruby_array - 240456 - - - index - 63360 - - - child - 708919 - - - - - ruby_array - index - - - 12 - - - 1 - 2 - 12708 - - - 2 - 3 - 213730 - - - 3 - 63361 - 14018 - - - - - - - ruby_array - child - - - 12 - - - 1 - 2 - 12708 - - - 2 - 3 - 213730 - - - 3 - 63361 - 14018 - - - - - - - index - ruby_array - - - 12 - - - 1 - 2 - 40208 - - - 2 - 6 - 4769 - - - 6 - 7 - 9559 - - - 7 - 8 - 598 - - - 8 - 9 - 6932 - - - 11 - 240457 - 1294 - - - - - - - index - child - - - 12 - - - 1 - 2 - 40208 - - - 2 - 6 - 4769 - - - 6 - 7 - 9559 - - - 7 - 8 - 598 - - - 8 - 9 - 6932 - - - 11 - 240457 - 1294 - - - - - - - child - ruby_array - - - 12 - - - 1 - 2 - 708919 - - - - - - - child - index - - - 12 - - - 1 - 2 - 708919 - - - - - - - - - ruby_array_def - 249320 - - - id - 249320 - - - - - - ruby_array_pattern_child - 336 - - - ruby_array_pattern - 168 - - - index - 18 - - - child - 336 - - - - - ruby_array_pattern - index - - - 12 - - - 1 - 2 - 51 - - - 2 - 3 - 97 - - - 3 - 4 - 14 - - - 4 - 19 - 6 - - - - - - - ruby_array_pattern - child - - - 12 - - - 1 - 2 - 51 - - - 2 - 3 - 97 - - - 3 - 4 - 14 - - - 4 - 19 - 6 - - - - - - - index - ruby_array_pattern - - - 12 - - - 1 - 2 - 7 - - - 2 - 3 - 5 - - - 4 - 5 - 2 - - - 6 - 7 - 1 - - - 20 - 21 - 1 - - - 117 - 118 - 1 - - - 168 - 169 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 7 - - - 2 - 3 - 5 - - - 4 - 5 - 2 - - - 6 - 7 - 1 - - - 20 - 21 - 1 - - - 117 - 118 - 1 - - - 168 - 169 - 1 - - - - - - - child - ruby_array_pattern - - - 12 - - - 1 - 2 - 336 - - - - - - - child - index - - - 12 - - - 1 - 2 - 336 - - - - - - - - - ruby_array_pattern_class - 51 - - - ruby_array_pattern - 51 - - - class - 51 - - - - - ruby_array_pattern - class - - - 12 - - - 1 - 2 - 51 - - - - - - - class - ruby_array_pattern - - - 12 - - - 1 - 2 - 51 - - - - - - - - - ruby_array_pattern_def - 179 - - - id - 179 - - - - - - ruby_as_pattern_def - 156 - - - id - 156 - - - name - 156 - - - value - 156 - - - - - id - name - - - 12 - - - 1 - 2 - 156 - - - - - - - id - value - - - 12 - - - 1 - 2 - 156 - - - - - - - name - id - - - 12 - - - 1 - 2 - 156 - - - - - - - name - value - - - 12 - - - 1 - 2 - 156 - - - - - - - value - id - - - 12 - - - 1 - 2 - 156 - - - - - - - value - name - - - 12 - - - 1 - 2 - 156 - - - - - - - - - ruby_assignment_def - 141202 - - - id - 141202 - - - left - 141202 - - - right - 141202 - - - - - id - left - - - 12 - - - 1 - 2 - 141202 - - - - - - - id - right - - - 12 - - - 1 - 2 - 141202 - - - - - - - left - id - - - 12 - - - 1 - 2 - 141202 - - - - - - - left - right - - - 12 - - - 1 - 2 - 141202 - - - - - - - right - id - - - 12 - - - 1 - 2 - 141202 - - - - - - - right - left - - - 12 - - - 1 - 2 - 141202 - - - - - - - - - ruby_ast_node_location - 9723503 - - - node - 9723503 - - - loc - 9209550 - - - - - node - loc - - - 12 - - - 1 - 2 - 9723503 - - - - - - - loc - node - - - 12 - - - 1 - 2 - 8697279 - - - 2 - 4 - 512270 - - - - - - - - - ruby_ast_node_parent - 9674605 - - - node - 9674605 - - - parent - 3381025 - - - parent_index - 2892 - - - - - node - parent - - - 12 - - - 1 - 2 - 9674605 - - - - - - - node - parent_index - - - 12 - - - 1 - 2 - 9674605 - - - - - - - parent - node - - - 12 - - - 1 - 2 - 533793 - - - 2 - 3 - 465418 - - - 3 - 4 - 1832321 - - - 4 - 5 - 359620 - - - 5 - 216 - 189871 - - - - - - - parent - parent_index - - - 12 - - - 1 - 2 - 533793 - - - 2 - 3 - 465418 - - - 3 - 4 - 1832321 - - - 4 - 5 - 359620 - - - 5 - 216 - 189871 - - - - - - - parent_index - node - - - 12 - - - 1 - 2 - 470 - - - 2 - 3 - 242 - - - 3 - 4 - 363 - - - 4 - 6 - 161 - - - 6 - 7 - 484 - - - 7 - 17 - 255 - - - 17 - 29 - 228 - - - 33 - 71 - 228 - - - 72 - 298 - 228 - - - 358 - 251345 - 228 - - - - - - - parent_index - parent - - - 12 - - - 1 - 2 - 470 - - - 2 - 3 - 242 - - - 3 - 4 - 363 - - - 4 - 6 - 161 - - - 6 - 7 - 484 - - - 7 - 17 - 255 - - - 17 - 29 - 228 - - - 33 - 71 - 228 - - - 72 - 298 - 228 - - - 358 - 251345 - 228 - - - - - - - - - ruby_bare_string_child - 16784 - - - ruby_bare_string - 13136 - - - index - 2309 - - - child - 16784 - - - - - ruby_bare_string - index - - - 12 - - - 1 - 2 - 12728 - - - 2 - 2310 - 408 - - - - - - - ruby_bare_string - child - - - 12 - - - 1 - 2 - 12728 - - - 2 - 2310 - 408 - - - - - - - index - ruby_bare_string - - - 12 - - - 1 - 2 - 1942 - - - 2 - 3 - 72 - - - 3 - 4 - 276 - - - 4 - 13137 - 19 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1942 - - - 2 - 3 - 72 - - - 3 - 4 - 276 - - - 4 - 13137 - 19 - - - - - - - child - ruby_bare_string - - - 12 - - - 1 - 2 - 16784 - - - - - - - child - index - - - 12 - - - 1 - 2 - 16784 - - - - - - - - - ruby_bare_string_def - 13136 - - - id - 13136 - - - - - - ruby_bare_symbol_child - 8435 - - - ruby_bare_symbol - 8435 - - - index - 2 - - - child - 8435 - - - - - ruby_bare_symbol - index - - - 12 - - - 1 - 2 - 8435 - - - - - - - ruby_bare_symbol - child - - - 12 - - - 1 - 2 - 8435 - - - - - - - index - ruby_bare_symbol - - - 12 - - - 3570 - 3571 - 2 - - - - - - - index - child - - - 12 - - - 3570 - 3571 - 2 - - - - - - - child - ruby_bare_symbol - - - 12 - - - 1 - 2 - 8435 - - - - - - - child - index - - - 12 - - - 1 - 2 - 8435 - - - - - - - - - ruby_bare_symbol_def - 8435 - - - id - 8435 - - - - - - ruby_begin_block_child - 39 - - - ruby_begin_block - 10 - - - index - 7 - - - child - 39 - - - - - ruby_begin_block - index - - - 12 - - - 1 - 2 - 3 - - - 2 - 3 - 1 - - - 3 - 4 - 2 - - - 7 - 8 - 4 - - - - - - - ruby_begin_block - child - - - 12 - - - 1 - 2 - 3 - - - 2 - 3 - 1 - - - 3 - 4 - 2 - - - 7 - 8 - 4 - - - - - - - index - ruby_begin_block - - - 12 - - - 4 - 5 - 4 - - - 6 - 7 - 1 - - - 7 - 8 - 1 - - - 10 - 11 - 1 - - - - - - - index - child - - - 12 - - - 4 - 5 - 4 - - - 6 - 7 - 1 - - - 7 - 8 - 1 - - - 10 - 11 - 1 - - - - - - - child - ruby_begin_block - - - 12 - - - 1 - 2 - 39 - - - - - - - child - index - - - 12 - - - 1 - 2 - 39 - - - - - - - - - ruby_begin_block_def - 10 - - - id - 10 - - - - - - ruby_begin_child - 7606 - - - ruby_begin - 2610 - - - index - 39 - - - child - 7606 - - - - - ruby_begin - index - - - 12 - - - 1 - 2 - 161 - - - 2 - 3 - 1414 - - - 3 - 4 - 537 - - - 4 - 5 - 200 - - - 5 - 8 - 221 - - - 8 - 40 - 77 - - - - - - - ruby_begin - child - - - 12 - - - 1 - 2 - 161 - - - 2 - 3 - 1414 - - - 3 - 4 - 537 - - - 4 - 5 - 200 - - - 5 - 8 - 221 - - - 8 - 40 - 77 - - - - - - - index - ruby_begin - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 3 - - - 3 - 4 - 12 - - - 4 - 8 - 2 - - - 9 - 12 - 3 - - - 15 - 17 - 3 - - - 23 - 33 - 3 - - - 37 - 59 - 3 - - - 77 - 166 - 3 - - - 298 - 1036 - 3 - - - 2449 - 2611 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 3 - - - 3 - 4 - 12 - - - 4 - 8 - 2 - - - 9 - 12 - 3 - - - 15 - 17 - 3 - - - 23 - 33 - 3 - - - 37 - 59 - 3 - - - 77 - 166 - 3 - - - 298 - 1036 - 3 - - - 2449 - 2611 - 2 - - - - - - - child - ruby_begin - - - 12 - - - 1 - 2 - 7606 - - - - - - - child - index - - - 12 - - - 1 - 2 - 7606 - - - - - - - - - ruby_begin_def - 2610 - - - id - 2610 - - - - - - ruby_binary_def - 73665 - - - id - 73665 - - - left - 73665 - - - operator - 25 - - - right - 73665 - - - - - id - left - - - 12 - - - 1 - 2 - 73665 - - - - - - - id - operator - - - 12 - - - 1 - 2 - 73665 - - - - - - - id - right - - - 12 - - - 1 - 2 - 73665 - - - - - - - left - id - - - 12 - - - 1 - 2 - 73665 - - - - - - - left - operator - - - 12 - - - 1 - 2 - 73665 - - - - - - - left - right - - - 12 - - - 1 - 2 - 73665 - - - - - - - operator - id - - - 12 - - - 153 - 177 - 2 - - - 259 - 432 - 2 - - - 597 - 631 - 2 - - - 647 - 690 - 2 - - - 764 - 987 - 2 - - - 1026 - 1033 - 2 - - - 1058 - 1073 - 2 - - - 1169 - 1190 - 2 - - - 1227 - 1824 - 2 - - - 2079 - 2661 - 2 - - - 2747 - 3491 - 2 - - - 6593 - 7408 - 2 - - - 33761 - 33762 - 1 - - - - - - - operator - left - - - 12 - - - 153 - 177 - 2 - - - 259 - 432 - 2 - - - 597 - 631 - 2 - - - 647 - 690 - 2 - - - 764 - 987 - 2 - - - 1026 - 1033 - 2 - - - 1058 - 1073 - 2 - - - 1169 - 1190 - 2 - - - 1227 - 1824 - 2 - - - 2079 - 2661 - 2 - - - 2747 - 3491 - 2 - - - 6593 - 7408 - 2 - - - 33761 - 33762 - 1 - - - - - - - operator - right - - - 12 - - - 153 - 177 - 2 - - - 259 - 432 - 2 - - - 597 - 631 - 2 - - - 647 - 690 - 2 - - - 764 - 987 - 2 - - - 1026 - 1033 - 2 - - - 1058 - 1073 - 2 - - - 1169 - 1190 - 2 - - - 1227 - 1824 - 2 - - - 2079 - 2661 - 2 - - - 2747 - 3491 - 2 - - - 6593 - 7408 - 2 - - - 33761 - 33762 - 1 - - - - - - - right - id - - - 12 - - - 1 - 2 - 73665 - - - - - - - right - left - - - 12 - - - 1 - 2 - 73665 - - - - - - - right - operator - - - 12 - - - 1 - 2 - 73665 - - - - - - - - - ruby_block_argument_child - 6541 - - - ruby_block_argument - 6541 - - - child - 6541 - - - - - ruby_block_argument - child - - - 12 - - - 1 - 2 - 6541 - - - - - - - child - ruby_block_argument - - - 12 - - - 1 - 2 - 6541 - - - - - - - - - ruby_block_argument_def - 6547 - - - id - 6547 - - - - - - ruby_block_body - 103820 - - - ruby_block - 103820 - - - body - 103820 - - - - - ruby_block - body - - - 12 - - - 1 - 2 - 103820 - - - - - - - body - ruby_block - - - 12 - - - 1 - 2 - 103820 - - - - - - - - - ruby_block_body_child - 103995 - - - ruby_block_body - 103820 - - - index - 53 - - - child - 103995 - - - - - ruby_block_body - index - - - 12 - - - 1 - 2 - 103699 - - - 2 - 5 - 121 - - - - - - - ruby_block_body - child - - - 12 - - - 1 - 2 - 103699 - - - 2 - 5 - 121 - - - - - - - index - ruby_block_body - - - 12 - - - 2 - 3 - 26 - - - 9 - 10 - 13 - - - 7718 - 7719 - 13 - - - - - - - index - child - - - 12 - - - 2 - 3 - 26 - - - 9 - 10 - 13 - - - 7718 - 7719 - 13 - - - - - - - child - ruby_block_body - - - 12 - - - 1 - 2 - 103995 - - - - - - - child - index - - - 12 - - - 1 - 2 - 103995 - - - - - - - - - ruby_block_body_def - 103820 - - - id - 103820 - - - - - - ruby_block_def - 104143 - - - id - 104143 - - - - - - ruby_block_parameter_def - 2543 - - - id - 2543 - - - - - - ruby_block_parameter_name - 2537 - - - ruby_block_parameter - 2537 - - - name - 2537 - - - - - ruby_block_parameter - name - - - 12 - - - 1 - 2 - 2537 - - - - - - - name - ruby_block_parameter - - - 12 - - - 1 - 2 - 2537 - - - - - - - - - ruby_block_parameters - 10767 - - - ruby_block - 10767 - - - parameters - 10767 - - - - - ruby_block - parameters - - - 12 - - - 1 - 2 - 10767 - - - - - - - parameters - ruby_block - - - 12 - - - 1 - 2 - 10767 - - - - - - - - - ruby_block_parameters_child - 30131 - - - ruby_block_parameters - 25884 - - - index - 14 - - - child - 30131 - - - - - ruby_block_parameters - index - - - 12 - - - 1 - 2 - 22189 - - - 2 - 3 - 3329 - - - 3 - 6 - 365 - - - - - - - ruby_block_parameters - child - - - 12 - - - 1 - 2 - 22189 - - - 2 - 3 - 3329 - - - 3 - 6 - 365 - - - - - - - index - ruby_block_parameters - - - 12 - - - 27 - 28 - 2 - - - 35 - 36 - 2 - - - 122 - 123 - 2 - - - 1232 - 1233 - 2 - - - 8630 - 8631 - 2 - - - - - - - index - child - - - 12 - - - 27 - 28 - 2 - - - 35 - 36 - 2 - - - 122 - 123 - 2 - - - 1232 - 1233 - 2 - - - 8630 - 8631 - 2 - - - - - - - child - ruby_block_parameters - - - 12 - - - 1 - 2 - 30131 - - - - - - - child - index - - - 12 - - - 1 - 2 - 30131 - - - - - - - - - ruby_block_parameters_def - 25884 - - - id - 25884 - - - - - - ruby_block_parameters_locals - 16 - - - ruby_block_parameters - 12 - - - index - 2 - - - locals - 16 - - - - - ruby_block_parameters - index - - - 12 - - - 1 - 2 - 8 - - - 2 - 3 - 4 - - - - - - - ruby_block_parameters - locals - - - 12 - - - 1 - 2 - 8 - - - 2 - 3 - 4 - - - - - - - index - ruby_block_parameters - - - 12 - - - 4 - 5 - 1 - - - 12 - 13 - 1 - - - - - - - index - locals - - - 12 - - - 4 - 5 - 1 - - - 12 - 13 - 1 - - - - - - - locals - ruby_block_parameters - - - 12 - - - 1 - 2 - 16 - - - - - - - locals - index - - - 12 - - - 1 - 2 - 16 - - - - - - - - - ruby_body_statement_child - 641142 - - - ruby_body_statement - 206879 - - - index - 1187 - - - child - 641142 - - - - - ruby_body_statement - index - - - 12 - - - 1 - 2 - 95107 - - - 2 - 3 - 37693 - - - 3 - 4 - 24510 - - - 4 - 5 - 15881 - - - 5 - 7 - 16388 - - - 7 - 23 - 15560 - - - 23 - 397 - 1736 - - - - - - - ruby_body_statement - child - - - 12 - - - 1 - 2 - 95107 - - - 2 - 3 - 37693 - - - 3 - 4 - 24510 - - - 4 - 5 - 15881 - - - 5 - 7 - 16388 - - - 7 - 23 - 15560 - - - 23 - 397 - 1736 - - - - - - - index - ruby_body_statement - - - 12 - - - 1 - 2 - 140 - - - 2 - 3 - 122 - - - 3 - 4 - 77 - - - 4 - 5 - 62 - - - 5 - 7 - 98 - - - 8 - 10 - 86 - - - 10 - 12 - 89 - - - 12 - 26 - 95 - - - 26 - 42 - 92 - - - 42 - 77 - 89 - - - 80 - 179 - 89 - - - 184 - 1016 - 89 - - - 1134 - 68975 - 47 - - - - - - - index - child - - - 12 - - - 1 - 2 - 140 - - - 2 - 3 - 122 - - - 3 - 4 - 77 - - - 4 - 5 - 62 - - - 5 - 7 - 98 - - - 8 - 10 - 86 - - - 10 - 12 - 89 - - - 12 - 26 - 95 - - - 26 - 42 - 92 - - - 42 - 77 - 89 - - - 80 - 179 - 89 - - - 184 - 1016 - 89 - - - 1134 - 68975 - 47 - - - - - - - child - ruby_body_statement - - - 12 - - - 1 - 2 - 641142 - - - - - - - child - index - - - 12 - - - 1 - 2 - 641142 - - - - - - - - - ruby_body_statement_def - 213896 - - - id - 213896 - - - - - - ruby_break_child - 394 - - - ruby_break - 394 - - - child - 394 - - - - - ruby_break - child - - - 12 - - - 1 - 2 - 394 - - - - - - - child - ruby_break - - - 12 - - - 1 - 2 - 394 - - - - - - - - - ruby_break_def - 3414 - - - id - 3414 - - - - - - ruby_call_arguments - 703178 - - - ruby_call - 703178 - - - arguments - 703178 - - - - - ruby_call - arguments - - - 12 - - - 1 - 2 - 703178 - - - - - - - arguments - ruby_call - - - 12 - - - 1 - 2 - 703178 - - - - - - - - - ruby_call_block - 246208 - - - ruby_call - 246208 - - - block - 246208 - - - - - ruby_call - block - - - 12 - - - 1 - 2 - 246208 - - - - - - - block - ruby_call - - - 12 - - - 1 - 2 - 246208 - - - - - - - - - ruby_call_def - 1027501 - - - id - 1027501 - - - - - - ruby_call_method - 1027501 - - - ruby_call - 1027501 - - - method - 1027501 - - - - - ruby_call - method - - - 12 - - - 1 - 2 - 1027501 - - - - - - - method - ruby_call - - - 12 - - - 1 - 2 - 1027501 - - - - - - - - - ruby_call_operator - 571632 - - - ruby_call - 571632 - - - operator - 571632 - - - - - ruby_call - operator - - - 12 - - - 1 - 2 - 571632 - - - - - - - operator - ruby_call - - - 12 - - - 1 - 2 - 571632 - - - - - - - - - ruby_call_receiver - 571632 - - - ruby_call - 571632 - - - receiver - 571632 - - - - - ruby_call - receiver - - - 12 - - - 1 - 2 - 571632 - - - - - - - receiver - ruby_call - - - 12 - - - 1 - 2 - 571632 - - - - - - - - - ruby_case_child - 4685 - - - ruby_case__ - 1267 - - - index - 86 - - - child - 4685 - - - - - ruby_case__ - index - - - 12 - - - 1 - 2 - 69 - - - 2 - 3 - 405 - - - 3 - 4 - 399 - - - 4 - 5 - 166 - - - 5 - 6 - 89 - - - 6 - 12 - 100 - - - 12 - 87 - 39 - - - - - - - ruby_case__ - child - - - 12 - - - 1 - 2 - 69 - - - 2 - 3 - 405 - - - 3 - 4 - 399 - - - 4 - 5 - 166 - - - 5 - 6 - 89 - - - 6 - 12 - 100 - - - 12 - 87 - 39 - - - - - - - index - ruby_case__ - - - 12 - - - 1 - 2 - 42 - - - 2 - 3 - 12 - - - 3 - 6 - 6 - - - 6 - 9 - 7 - - - 9 - 31 - 7 - - - 39 - 140 - 7 - - - 228 - 1268 - 5 - - - - - - - index - child - - - 12 - - - 1 - 2 - 42 - - - 2 - 3 - 12 - - - 3 - 6 - 6 - - - 6 - 9 - 7 - - - 9 - 31 - 7 - - - 39 - 140 - 7 - - - 228 - 1268 - 5 - - - - - - - child - ruby_case__ - - - 12 - - - 1 - 2 - 4685 - - - - - - - child - index - - - 12 - - - 1 - 2 - 4685 - - - - - - - - - ruby_case_def - 1319 - - - id - 1319 - - - - - - ruby_case_match_clauses - 381 - - - ruby_case_match - 232 - - - index - 12 - - - clauses - 381 - - - - - ruby_case_match - index - - - 12 - - - 1 - 2 - 160 - - - 2 - 3 - 40 - - - 3 - 4 - 17 - - - 4 - 13 - 15 - - - - - - - ruby_case_match - clauses - - - 12 - - - 1 - 2 - 160 - - - 2 - 3 - 40 - - - 3 - 4 - 17 - - - 4 - 13 - 15 - - - - - - - index - ruby_case_match - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 3 - - - 5 - 6 - 1 - - - 8 - 9 - 1 - - - 9 - 10 - 1 - - - 15 - 16 - 1 - - - 32 - 33 - 1 - - - 72 - 73 - 1 - - - 232 - 233 - 1 - - - - - - - index - clauses - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 3 - - - 5 - 6 - 1 - - - 8 - 9 - 1 - - - 9 - 10 - 1 - - - 15 - 16 - 1 - - - 32 - 33 - 1 - - - 72 - 73 - 1 - - - 232 - 233 - 1 - - - - - - - clauses - ruby_case_match - - - 12 - - - 1 - 2 - 381 - - - - - - - clauses - index - - - 12 - - - 1 - 2 - 381 - - - - - - - - - ruby_case_match_def - 232 - - - id - 232 - - - value - 232 - - - - - id - value - - - 12 - - - 1 - 2 - 232 - - - - - - - value - id - - - 12 - - - 1 - 2 - 232 - - - - - - - - - ruby_case_match_else - 45 - - - ruby_case_match - 45 - - - else - 45 - - - - - ruby_case_match - else - - - 12 - - - 1 - 2 - 45 - - - - - - - else - ruby_case_match - - - 12 - - - 1 - 2 - 45 - - - - - - - - - ruby_case_value - 1277 - - - ruby_case__ - 1277 - - - value - 1277 - - - - - ruby_case__ - value - - - 12 - - - 1 - 2 - 1277 - - - - - - - value - ruby_case__ - - - 12 - - - 1 - 2 - 1277 - - - - - - - - - ruby_chained_string_child - 3320 - - - ruby_chained_string - 884 - - - index - 35 - - - child - 3320 - - - - - ruby_chained_string - index - - - 12 - - - 2 - 3 - 296 - - - 3 - 4 - 215 - - - 4 - 5 - 128 - - - 5 - 6 - 116 - - - 6 - 8 - 65 - - - 8 - 13 - 59 - - - - - - - ruby_chained_string - child - - - 12 - - - 2 - 3 - 296 - - - 3 - 4 - 215 - - - 4 - 5 - 128 - - - 5 - 6 - 116 - - - 6 - 8 - 65 - - - 8 - 13 - 59 - - - - - - - index - ruby_chained_string - - - 12 - - - 2 - 3 - 2 - - - 4 - 5 - 2 - - - 7 - 8 - 2 - - - 8 - 9 - 2 - - - 20 - 21 - 2 - - - 33 - 34 - 2 - - - 42 - 43 - 2 - - - 81 - 82 - 2 - - - 124 - 125 - 2 - - - 196 - 197 - 2 - - - 295 - 296 - 5 - - - - - - - index - child - - - 12 - - - 2 - 3 - 2 - - - 4 - 5 - 2 - - - 7 - 8 - 2 - - - 8 - 9 - 2 - - - 20 - 21 - 2 - - - 33 - 34 - 2 - - - 42 - 43 - 2 - - - 81 - 82 - 2 - - - 124 - 125 - 2 - - - 196 - 197 - 2 - - - 295 - 296 - 5 - - - - - - - child - ruby_chained_string - - - 12 - - - 1 - 2 - 3320 - - - - - - - child - index - - - 12 - - - 1 - 2 - 3320 - - - - - - - - - ruby_chained_string_def - 884 - - - id - 884 - - - - - - ruby_class_body - 15734 - - - ruby_class - 15734 - - - body - 15734 - - - - - ruby_class - body - - - 12 - - - 1 - 2 - 15734 - - - - - - - body - ruby_class - - - 12 - - - 1 - 2 - 15734 - - - - - - - - - ruby_class_def - 17441 - - - id - 17441 - - - name - 17441 - - - - - id - name - - - 12 - - - 1 - 2 - 17441 - - - - - - - name - id - - - 12 - - - 1 - 2 - 17441 - - - - - - - - - ruby_class_superclass - 13806 - - - ruby_class - 13806 - - - superclass - 13806 - - - - - ruby_class - superclass - - - 12 - - - 1 - 2 - 13806 - - - - - - - superclass - ruby_class - - - 12 - - - 1 - 2 - 13806 - - - - - - - - - ruby_complex_def - 72 - - - id - 72 - - - child - 72 - - - - - id - child - - - 12 - - - 1 - 2 - 72 - - - - - - - child - id - - - 12 - - - 1 - 2 - 72 - - - - - - - - - ruby_conditional_def - 2896 - - - id - 2896 - - - alternative - 2896 - - - condition - 2896 - - - consequence - 2896 - - - - - id - alternative - - - 12 - - - 1 - 2 - 2896 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 2896 - - - - - - - id - consequence - - - 12 - - - 1 - 2 - 2896 - - - - - - - alternative - id - - - 12 - - - 1 - 2 - 2896 - - - - - - - alternative - condition - - - 12 - - - 1 - 2 - 2896 - - - - - - - alternative - consequence - - - 12 - - - 1 - 2 - 2896 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 2896 - - - - - - - condition - alternative - - - 12 - - - 1 - 2 - 2896 - - - - - - - condition - consequence - - - 12 - - - 1 - 2 - 2896 - - - - - - - consequence - id - - - 12 - - - 1 - 2 - 2896 - - - - - - - consequence - alternative - - - 12 - - - 1 - 2 - 2896 - - - - - - - consequence - condition - - - 12 - - - 1 - 2 - 2896 - - - - - - - - - ruby_delimited_symbol_child - 1742 - - - ruby_delimited_symbol - 1247 - - - index - 23 - - - child - 1742 - - - - - ruby_delimited_symbol - index - - - 12 - - - 1 - 2 - 920 - - - 2 - 3 - 254 - - - 3 - 9 - 71 - - - - - - - ruby_delimited_symbol - child - - - 12 - - - 1 - 2 - 920 - - - 2 - 3 - 254 - - - 3 - 9 - 71 - - - - - - - index - ruby_delimited_symbol - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 2 - - - 6 - 7 - 2 - - - 9 - 10 - 2 - - - 13 - 14 - 2 - - - 24 - 25 - 2 - - - 109 - 110 - 2 - - - 416 - 417 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 2 - - - 6 - 7 - 2 - - - 9 - 10 - 2 - - - 13 - 14 - 2 - - - 24 - 25 - 2 - - - 109 - 110 - 2 - - - 416 - 417 - 2 - - - - - - - child - ruby_delimited_symbol - - - 12 - - - 1 - 2 - 1742 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1742 - - - - - - - - - ruby_delimited_symbol_def - 1247 - - - id - 1247 - - - - - - ruby_destructured_left_assignment_child - 226 - - - ruby_destructured_left_assignment - 108 - - - index - 4 - - - child - 226 - - - - - ruby_destructured_left_assignment - index - - - 12 - - - 1 - 2 - 12 - - - 2 - 3 - 79 - - - 3 - 4 - 12 - - - 4 - 5 - 5 - - - - - - - ruby_destructured_left_assignment - child - - - 12 - - - 1 - 2 - 12 - - - 2 - 3 - 79 - - - 3 - 4 - 12 - - - 4 - 5 - 5 - - - - - - - index - ruby_destructured_left_assignment - - - 12 - - - 5 - 6 - 1 - - - 17 - 18 - 1 - - - 96 - 97 - 1 - - - 108 - 109 - 1 - - - - - - - index - child - - - 12 - - - 5 - 6 - 1 - - - 17 - 18 - 1 - - - 96 - 97 - 1 - - - 108 - 109 - 1 - - - - - - - child - ruby_destructured_left_assignment - - - 12 - - - 1 - 2 - 226 - - - - - - - child - index - - - 12 - - - 1 - 2 - 226 - - - - - - - - - ruby_destructured_left_assignment_def - 108 - - - id - 108 - - - - - - ruby_destructured_parameter_child - 463 - - - ruby_destructured_parameter - 208 - - - index - 11 - - - child - 463 - - - - - ruby_destructured_parameter - index - - - 12 - - - 1 - 2 - 16 - - - 2 - 3 - 162 - - - 3 - 4 - 19 - - - 4 - 12 - 11 - - - - - - - ruby_destructured_parameter - child - - - 12 - - - 1 - 2 - 16 - - - 2 - 3 - 162 - - - 3 - 4 - 19 - - - 4 - 12 - 11 - - - - - - - index - ruby_destructured_parameter - - - 12 - - - 2 - 3 - 1 - - - 3 - 4 - 5 - - - 5 - 6 - 1 - - - 11 - 12 - 1 - - - 30 - 31 - 1 - - - 192 - 193 - 1 - - - 208 - 209 - 1 - - - - - - - index - child - - - 12 - - - 2 - 3 - 1 - - - 3 - 4 - 5 - - - 5 - 6 - 1 - - - 11 - 12 - 1 - - - 30 - 31 - 1 - - - 192 - 193 - 1 - - - 208 - 209 - 1 - - - - - - - child - ruby_destructured_parameter - - - 12 - - - 1 - 2 - 463 - - - - - - - child - index - - - 12 - - - 1 - 2 - 463 - - - - - - - - - ruby_destructured_parameter_def - 208 - - - id - 208 - - - - - - ruby_do_block_body - 145373 - - - ruby_do_block - 145373 - - - body - 145373 - - - - - ruby_do_block - body - - - 12 - - - 1 - 2 - 145373 - - - - - - - body - ruby_do_block - - - 12 - - - 1 - 2 - 145373 - - - - - - - - - ruby_do_block_def - 145534 - - - id - 145534 - - - - - - ruby_do_block_parameters - 16724 - - - ruby_do_block - 16724 - - - parameters - 16724 - - - - - ruby_do_block - parameters - - - 12 - - - 1 - 2 - 16724 - - - - - - - parameters - ruby_do_block - - - 12 - - - 1 - 2 - 16724 - - - - - - - - - ruby_do_child - 9352 - - - ruby_do - 1651 - - - index - 211 - - - child - 9352 - - - - - ruby_do - index - - - 12 - - - 1 - 2 - 347 - - - 2 - 3 - 300 - - - 3 - 4 - 204 - - - 4 - 6 - 149 - - - 6 - 7 - 25 - - - 7 - 8 - 137 - - - 8 - 9 - 209 - - - 9 - 14 - 116 - - - 14 - 18 - 125 - - - 18 - 212 - 39 - - - - - - - ruby_do - child - - - 12 - - - 1 - 2 - 347 - - - 2 - 3 - 300 - - - 3 - 4 - 204 - - - 4 - 6 - 149 - - - 6 - 7 - 25 - - - 7 - 8 - 137 - - - 8 - 9 - 209 - - - 9 - 14 - 116 - - - 14 - 18 - 125 - - - 18 - 212 - 39 - - - - - - - index - ruby_do - - - 12 - - - 1 - 2 - 105 - - - 2 - 3 - 26 - - - 3 - 4 - 31 - - - 4 - 6 - 18 - - - 6 - 63 - 16 - - - 116 - 1652 - 15 - - - - - - - index - child - - - 12 - - - 1 - 2 - 105 - - - 2 - 3 - 26 - - - 3 - 4 - 31 - - - 4 - 6 - 18 - - - 6 - 63 - 16 - - - 116 - 1652 - 15 - - - - - - - child - ruby_do - - - 12 - - - 1 - 2 - 9352 - - - - - - - child - index - - - 12 - - - 1 - 2 - 9352 - - - - - - - - - ruby_do_def - 1675 - - - id - 1675 - - - - - - ruby_element_reference_child - 82748 - - - ruby_element_reference - 82601 - - - index - 4 - - - child - 82748 - - - - - ruby_element_reference - index - - - 12 - - - 1 - 2 - 82455 - - - 2 - 3 - 146 - - - - - - - ruby_element_reference - child - - - 12 - - - 1 - 2 - 82455 - - - 2 - 3 - 146 - - - - - - - index - ruby_element_reference - - - 12 - - - 62 - 63 - 2 - - - 34958 - 34959 - 2 - - - - - - - index - child - - - 12 - - - 62 - 63 - 2 - - - 34958 - 34959 - 2 - - - - - - - child - ruby_element_reference - - - 12 - - - 1 - 2 - 82748 - - - - - - - child - index - - - 12 - - - 1 - 2 - 82748 - - - - - - - - - ruby_element_reference_def - 82606 - - - id - 82606 - - - object - 82606 - - - - - id - object - - - 12 - - - 1 - 2 - 82606 - - - - - - - object - id - - - 12 - - - 1 - 2 - 82606 - - - - - - - - - ruby_else_child - 9730 - - - ruby_else - 7669 - - - index - 32 - - - child - 9730 - - - - - ruby_else - index - - - 12 - - - 1 - 2 - 6454 - - - 2 - 3 - 758 - - - 3 - 12 - 455 - - - - - - - ruby_else - child - - - 12 - - - 1 - 2 - 6454 - - - 2 - 3 - 758 - - - 3 - 12 - 455 - - - - - - - index - ruby_else - - - 12 - - - 1 - 2 - 2 - - - 4 - 5 - 2 - - - 5 - 6 - 2 - - - 6 - 7 - 2 - - - 9 - 10 - 2 - - - 15 - 16 - 2 - - - 26 - 27 - 2 - - - 64 - 65 - 2 - - - 152 - 153 - 2 - - - 405 - 406 - 2 - - - 2557 - 2558 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 2 - - - 4 - 5 - 2 - - - 5 - 6 - 2 - - - 6 - 7 - 2 - - - 9 - 10 - 2 - - - 15 - 16 - 2 - - - 26 - 27 - 2 - - - 64 - 65 - 2 - - - 152 - 153 - 2 - - - 405 - 406 - 2 - - - 2557 - 2558 - 2 - - - - - - - child - ruby_else - - - 12 - - - 1 - 2 - 9730 - - - - - - - child - index - - - 12 - - - 1 - 2 - 9730 - - - - - - - - - ruby_else_def - 7681 - - - id - 7681 - - - - - - ruby_elsif_alternative - 1058 - - - ruby_elsif - 1058 - - - alternative - 1058 - - - - - ruby_elsif - alternative - - - 12 - - - 1 - 2 - 1058 - - - - - - - alternative - ruby_elsif - - - 12 - - - 1 - 2 - 1058 - - - - - - - - - ruby_elsif_consequence - 1571 - - - ruby_elsif - 1571 - - - consequence - 1571 - - - - - ruby_elsif - consequence - - - 12 - - - 1 - 2 - 1571 - - - - - - - consequence - ruby_elsif - - - 12 - - - 1 - 2 - 1571 - - - - - - - - - ruby_elsif_def - 1583 - - - id - 1583 - - - condition - 1583 - - - - - id - condition - - - 12 - - - 1 - 2 - 1583 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 1583 - - - - - - - - - ruby_end_block_child - 27 - - - ruby_end_block - 13 - - - index - 10 - - - child - 27 - - - - - ruby_end_block - index - - - 12 - - - 1 - 2 - 8 - - - 2 - 3 - 3 - - - 3 - 4 - 1 - - - 10 - 11 - 1 - - - - - - - ruby_end_block - child - - - 12 - - - 1 - 2 - 8 - - - 2 - 3 - 3 - - - 3 - 4 - 1 - - - 10 - 11 - 1 - - - - - - - index - ruby_end_block - - - 12 - - - 1 - 2 - 7 - - - 2 - 3 - 1 - - - 5 - 6 - 1 - - - 13 - 14 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 7 - - - 2 - 3 - 1 - - - 5 - 6 - 1 - - - 13 - 14 - 1 - - - - - - - child - ruby_end_block - - - 12 - - - 1 - 2 - 27 - - - - - - - child - index - - - 12 - - - 1 - 2 - 27 - - - - - - - - - ruby_end_block_def - 13 - - - id - 13 - - - - - - ruby_ensure_child - 5236 - - - ruby_ensure - 4106 - - - index - 47 - - - child - 5236 - - - - - ruby_ensure - index - - - 12 - - - 1 - 2 - 3323 - - - 2 - 3 - 554 - - - 3 - 17 - 227 - - - - - - - ruby_ensure - child - - - 12 - - - 1 - 2 - 3323 - - - 2 - 3 - 554 - - - 3 - 17 - 227 - - - - - - - index - ruby_ensure - - - 12 - - - 1 - 2 - 23 - - - 3 - 4 - 5 - - - 4 - 5 - 2 - - - 5 - 6 - 2 - - - 17 - 18 - 2 - - - 76 - 77 - 2 - - - 261 - 262 - 2 - - - 1369 - 1370 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 23 - - - 3 - 4 - 5 - - - 4 - 5 - 2 - - - 5 - 6 - 2 - - - 17 - 18 - 2 - - - 76 - 77 - 2 - - - 261 - 262 - 2 - - - 1369 - 1370 - 2 - - - - - - - child - ruby_ensure - - - 12 - - - 1 - 2 - 5236 - - - - - - - child - index - - - 12 - - - 1 - 2 - 5236 - - - - - - - - - ruby_ensure_def - 4106 - - - id - 4106 - - - - - - ruby_exception_variable_def - 935 - - - id - 935 - - - child - 935 - - - - - id - child - - - 12 - - - 1 - 2 - 935 - - - - - - - child - id - - - 12 - - - 1 - 2 - 935 - - - - - - - - - ruby_exceptions_child - 2128 - - - ruby_exceptions - 1904 - - - index - 11 - - - child - 2128 - - - - - ruby_exceptions - index - - - 12 - - - 1 - 2 - 1748 - - - 2 - 5 - 153 - - - 5 - 6 - 2 - - - - - - - ruby_exceptions - child - - - 12 - - - 1 - 2 - 1748 - - - 2 - 5 - 153 - - - 5 - 6 - 2 - - - - - - - index - ruby_exceptions - - - 12 - - - 1 - 2 - 2 - - - 6 - 7 - 2 - - - 22 - 23 - 2 - - - 66 - 67 - 2 - - - 806 - 807 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 2 - - - 6 - 7 - 2 - - - 22 - 23 - 2 - - - 66 - 67 - 2 - - - 806 - 807 - 2 - - - - - - - child - ruby_exceptions - - - 12 - - - 1 - 2 - 2128 - - - - - - - child - index - - - 12 - - - 1 - 2 - 2128 - - - - - - - - - ruby_exceptions_def - 1904 - - - id - 1904 - - - - - - ruby_expression_reference_pattern_def - 3 - - - id - 3 - - - value - 3 - - - - - id - value - - - 12 - - - 1 - 2 - 3 - - - - - - - value - id - - - 12 - - - 1 - 2 - 3 - - - - - - - - - ruby_find_pattern_child - 56 - - - ruby_find_pattern - 18 - - - index - 4 - - - child - 56 - - - - - ruby_find_pattern - index - - - 12 - - - 3 - 4 - 16 - - - 4 - 5 - 2 - - - - - - - ruby_find_pattern - child - - - 12 - - - 3 - 4 - 16 - - - 4 - 5 - 2 - - - - - - - index - ruby_find_pattern - - - 12 - - - 2 - 3 - 1 - - - 18 - 19 - 3 - - - - - - - index - child - - - 12 - - - 2 - 3 - 1 - - - 18 - 19 - 3 - - - - - - - child - ruby_find_pattern - - - 12 - - - 1 - 2 - 56 - - - - - - - child - index - - - 12 - - - 1 - 2 - 56 - - - - - - - - - ruby_find_pattern_class - 5 - - - ruby_find_pattern - 5 - - - class - 5 - - - - - ruby_find_pattern - class - - - 12 - - - 1 - 2 - 5 - - - - - - - class - ruby_find_pattern - - - 12 - - - 1 - 2 - 5 - - - - - - - - - ruby_find_pattern_def - 18 - - - id - 18 - - - - - - ruby_for_def - 136 - - - id - 136 - - - body - 136 - - - pattern - 136 - - - value - 136 - - - - - id - body - - - 12 - - - 1 - 2 - 136 - - - - - - - id - pattern - - - 12 - - - 1 - 2 - 136 - - - - - - - id - value - - - 12 - - - 1 - 2 - 136 - - - - - - - body - id - - - 12 - - - 1 - 2 - 136 - - - - - - - body - pattern - - - 12 - - - 1 - 2 - 136 - - - - - - - body - value - - - 12 - - - 1 - 2 - 136 - - - - - - - pattern - id - - - 12 - - - 1 - 2 - 136 - - - - - - - pattern - body - - - 12 - - - 1 - 2 - 136 - - - - - - - pattern - value - - - 12 - - - 1 - 2 - 136 - - - - - - - value - id - - - 12 - - - 1 - 2 - 136 - - - - - - - value - body - - - 12 - - - 1 - 2 - 136 - - - - - - - value - pattern - - - 12 - - - 1 - 2 - 136 - - - - - - - - - ruby_hash_child - 96207 - - - ruby_hash - 37893 - - - index - 1439 - - - child - 96207 - - - - - ruby_hash - index - - - 12 - - - 1 - 2 - 15577 - - - 2 - 3 - 10573 - - - 3 - 4 - 4318 - - - 4 - 5 - 4385 - - - 5 - 20 - 2878 - - - 20 - 108 - 161 - - - - - - - ruby_hash - child - - - 12 - - - 1 - 2 - 15577 - - - 2 - 3 - 10573 - - - 3 - 4 - 4318 - - - 4 - 5 - 4385 - - - 5 - 20 - 2878 - - - 20 - 108 - 161 - - - - - - - index - ruby_hash - - - 12 - - - 1 - 2 - 363 - - - 2 - 3 - 255 - - - 3 - 4 - 336 - - - 5 - 6 - 107 - - - 7 - 13 - 121 - - - 16 - 55 - 121 - - - 59 - 1660 - 121 - - - 2817 - 2818 - 13 - - - - - - - index - child - - - 12 - - - 1 - 2 - 363 - - - 2 - 3 - 255 - - - 3 - 4 - 336 - - - 5 - 6 - 107 - - - 7 - 13 - 121 - - - 16 - 55 - 121 - - - 59 - 1660 - 121 - - - 2817 - 2818 - 13 - - - - - - - child - ruby_hash - - - 12 - - - 1 - 2 - 96207 - - - - - - - child - index - - - 12 - - - 1 - 2 - 96207 - - - - - - - - - ruby_hash_def - 41915 - - - id - 41915 - - - - - - ruby_hash_pattern_child - 94 - - - ruby_hash_pattern - 68 - - - index - 4 - - - child - 94 - - - - - ruby_hash_pattern - index - - - 12 - - - 1 - 2 - 50 - - - 2 - 3 - 12 - - - 3 - 5 - 6 - - - - - - - ruby_hash_pattern - child - - - 12 - - - 1 - 2 - 50 - - - 2 - 3 - 12 - - - 3 - 5 - 6 - - - - - - - index - ruby_hash_pattern - - - 12 - - - 2 - 3 - 1 - - - 6 - 7 - 1 - - - 18 - 19 - 1 - - - 68 - 69 - 1 - - - - - - - index - child - - - 12 - - - 2 - 3 - 1 - - - 6 - 7 - 1 - - - 18 - 19 - 1 - - - 68 - 69 - 1 - - - - - - - child - ruby_hash_pattern - - - 12 - - - 1 - 2 - 94 - - - - - - - child - index - - - 12 - - - 1 - 2 - 94 - - - - - - - - - ruby_hash_pattern_class - 32 - - - ruby_hash_pattern - 32 - - - class - 32 - - - - - ruby_hash_pattern - class - - - 12 - - - 1 - 2 - 32 - - - - - - - class - ruby_hash_pattern - - - 12 - - - 1 - 2 - 32 - - - - - - - - - ruby_hash_pattern_def - 73 - - - id - 73 - - - - - - ruby_hash_splat_argument_child - 1988 - - - ruby_hash_splat_argument - 1988 - - - child - 1988 - - - - - ruby_hash_splat_argument - child - - - 12 - - - 1 - 2 - 1988 - - - - - - - child - ruby_hash_splat_argument - - - 12 - - - 1 - 2 - 1988 - - - - - - - - - ruby_hash_splat_argument_def - 1989 - - - id - 1989 - - - - - - ruby_hash_splat_parameter_def - 1574 - - - id - 1574 - - - - - - ruby_hash_splat_parameter_name - 1352 - - - ruby_hash_splat_parameter - 1352 - - - name - 1352 - - - - - ruby_hash_splat_parameter - name - - - 12 - - - 1 - 2 - 1352 - - - - - - - name - ruby_hash_splat_parameter - - - 12 - - - 1 - 2 - 1352 - - - - - - - - - ruby_heredoc_body_child - 26244 - - - ruby_heredoc_body - 5817 - - - index - 512 - - - child - 26244 - - - - - ruby_heredoc_body - index - - - 12 - - - 2 - 3 - 3504 - - - 4 - 5 - 701 - - - 5 - 6 - 2 - - - 6 - 7 - 675 - - - 7 - 9 - 328 - - - 10 - 17 - 467 - - - 17 - 218 - 137 - - - - - - - ruby_heredoc_body - child - - - 12 - - - 2 - 3 - 3504 - - - 4 - 5 - 701 - - - 5 - 6 - 2 - - - 6 - 7 - 675 - - - 7 - 9 - 328 - - - 10 - 17 - 467 - - - 17 - 218 - 137 - - - - - - - index - ruby_heredoc_body - - - 12 - - - 1 - 2 - 302 - - - 2 - 3 - 40 - - - 3 - 5 - 47 - - - 5 - 13 - 40 - - - 13 - 43 - 40 - - - 56 - 2463 - 42 - - - - - - - index - child - - - 12 - - - 1 - 2 - 302 - - - 2 - 3 - 40 - - - 3 - 5 - 47 - - - 5 - 13 - 40 - - - 13 - 43 - 40 - - - 56 - 2463 - 42 - - - - - - - child - ruby_heredoc_body - - - 12 - - - 1 - 2 - 26244 - - - - - - - child - index - - - 12 - - - 1 - 2 - 26244 - - - - - - - - - ruby_heredoc_body_def - 6934 - - - id - 6934 - - - - - - ruby_if_alternative - 7192 - - - ruby_if - 7192 - - - alternative - 7192 - - - - - ruby_if - alternative - - - 12 - - - 1 - 2 - 7192 - - - - - - - alternative - ruby_if - - - 12 - - - 1 - 2 - 7192 - - - - - - - - - ruby_if_consequence - 16117 - - - ruby_if - 16117 - - - consequence - 16117 - - - - - ruby_if - consequence - - - 12 - - - 1 - 2 - 16117 - - - - - - - consequence - ruby_if - - - 12 - - - 1 - 2 - 16117 - - - - - - - - - ruby_if_def - 16164 - - - id - 16164 - - - condition - 16164 - - - - - id - condition - - - 12 - - - 1 - 2 - 16164 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 16164 - - - - - - - - - ruby_if_guard_def - 9 - - - id - 9 - - - condition - 9 - - - - - id - condition - - - 12 - - - 1 - 2 - 9 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 9 - - - - - - - - - ruby_if_modifier_def - 14541 - - - id - 14541 - - - body - 14541 - - - condition - 14541 - - - - - id - body - - - 12 - - - 1 - 2 - 14541 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 14541 - - - - - - - body - id - - - 12 - - - 1 - 2 - 14541 - - - - - - - body - condition - - - 12 - - - 1 - 2 - 14541 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 14541 - - - - - - - condition - body - - - 12 - - - 1 - 2 - 14541 - - - - - - - - - ruby_in_clause_body - 341 - - - ruby_in_clause - 341 - - - body - 341 - - - - - ruby_in_clause - body - - - 12 - - - 1 - 2 - 341 - - - - - - - body - ruby_in_clause - - - 12 - - - 1 - 2 - 341 - - - - - - - - - ruby_in_clause_def - 381 - - - id - 381 - - - pattern - 381 - - - - - id - pattern - - - 12 - - - 1 - 2 - 381 - - - - - - - pattern - id - - - 12 - - - 1 - 2 - 381 - - - - - - - - - ruby_in_clause_guard - 13 - - - ruby_in_clause - 13 - - - guard - 13 - - - - - ruby_in_clause - guard - - - 12 - - - 1 - 2 - 13 - - - - - - - guard - ruby_in_clause - - - 12 - - - 1 - 2 - 13 - - - - - - - - - ruby_in_def - 136 - - - id - 136 - - - child - 136 - - - - - id - child - - - 12 - - - 1 - 2 - 136 - - - - - - - child - id - - - 12 - - - 1 - 2 - 136 - - - - - - - - - ruby_interpolation_child - 38493 - - - ruby_interpolation - 38493 - - - index - 2 - - - child - 38493 - - - - - ruby_interpolation - index - - - 12 - - - 1 - 2 - 38493 - - - - - - - ruby_interpolation - child - - - 12 - - - 1 - 2 - 38493 - - - - - - - index - ruby_interpolation - - - 12 - - - 16291 - 16292 - 2 - - - - - - - index - child - - - 12 - - - 16291 - 16292 - 2 - - - - - - - child - ruby_interpolation - - - 12 - - - 1 - 2 - 38493 - - - - - - - child - index - - - 12 - - - 1 - 2 - 38493 - - - - - - - - - ruby_interpolation_def - 38493 - - - id - 38493 - - - - - - ruby_keyword_parameter_def - 4763 - - - id - 4763 - - - name - 4763 - - - - - id - name - - - 12 - - - 1 - 2 - 4763 - - - - - - - name - id - - - 12 - - - 1 - 2 - 4763 - - - - - - - - - ruby_keyword_parameter_value - 3293 - - - ruby_keyword_parameter - 3293 - - - value - 3293 - - - - - ruby_keyword_parameter - value - - - 12 - - - 1 - 2 - 3293 - - - - - - - value - ruby_keyword_parameter - - - 12 - - - 1 - 2 - 3293 - - - - - - - - - ruby_keyword_pattern_def - 77 - - - id - 77 - - - key__ - 77 - - - - - id - key__ - - - 12 - - - 1 - 2 - 77 - - - - - - - key__ - id - - - 12 - - - 1 - 2 - 77 - - - - - - - - - ruby_keyword_pattern_value - 56 - - - ruby_keyword_pattern - 56 - - - value - 56 - - - - - ruby_keyword_pattern - value - - - 12 - - - 1 - 2 - 56 - - - - - - - value - ruby_keyword_pattern - - - 12 - - - 1 - 2 - 56 - - - - - - - - - ruby_lambda_def - 8187 - - - id - 8187 - - - body - 8187 - - - - - id - body - - - 12 - - - 1 - 2 - 8187 - - - - - - - body - id - - - 12 - - - 1 - 2 - 8187 - - - - - - - - - ruby_lambda_parameters - 1811 - - - ruby_lambda - 1811 - - - parameters - 1811 - - - - - ruby_lambda - parameters - - - 12 - - - 1 - 2 - 1811 - - - - - - - parameters - ruby_lambda - - - 12 - - - 1 - 2 - 1811 - - - - - - - - - ruby_lambda_parameters_child - 2197 - - - ruby_lambda_parameters - 1801 - - - index - 8 - - - child - 2197 - - - - - ruby_lambda_parameters - index - - - 12 - - - 1 - 2 - 1545 - - - 2 - 3 - 164 - - - 3 - 9 - 92 - - - - - - - ruby_lambda_parameters - child - - - 12 - - - 1 - 2 - 1545 - - - 2 - 3 - 164 - - - 3 - 9 - 92 - - - - - - - index - ruby_lambda_parameters - - - 12 - - - 1 - 2 - 1 - - - 3 - 4 - 1 - - - 4 - 5 - 1 - - - 11 - 12 - 1 - - - 29 - 30 - 1 - - - 92 - 93 - 1 - - - 256 - 257 - 1 - - - 1801 - 1802 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1 - - - 3 - 4 - 1 - - - 4 - 5 - 1 - - - 11 - 12 - 1 - - - 29 - 30 - 1 - - - 92 - 93 - 1 - - - 256 - 257 - 1 - - - 1801 - 1802 - 1 - - - - - - - child - ruby_lambda_parameters - - - 12 - - - 1 - 2 - 2197 - - - - - - - child - index - - - 12 - - - 1 - 2 - 2197 - - - - - - - - - ruby_lambda_parameters_def - 1811 - - - id - 1811 - - - - - - ruby_left_assignment_list_child - 6934 - - - ruby_left_assignment_list - 3100 - - - index - 15 - - - child - 6934 - - - - - ruby_left_assignment_list - index - - - 12 - - - 1 - 2 - 382 - - - 2 - 3 - 2002 - - - 3 - 4 - 531 - - - 4 - 16 - 185 - - - - - - - ruby_left_assignment_list - child - - - 12 - - - 1 - 2 - 382 - - - 2 - 3 - 2002 - - - 3 - 4 - 531 - - - 4 - 16 - 185 - - - - - - - index - ruby_left_assignment_list - - - 12 - - - 3 - 4 - 1 - - - 6 - 7 - 2 - - - 10 - 11 - 3 - - - 15 - 16 - 1 - - - 20 - 21 - 1 - - - 22 - 23 - 1 - - - 41 - 42 - 1 - - - 72 - 73 - 1 - - - 185 - 186 - 1 - - - 716 - 717 - 1 - - - 2718 - 2719 - 1 - - - 3100 - 3101 - 1 - - - - - - - index - child - - - 12 - - - 3 - 4 - 1 - - - 6 - 7 - 2 - - - 10 - 11 - 3 - - - 15 - 16 - 1 - - - 20 - 21 - 1 - - - 22 - 23 - 1 - - - 41 - 42 - 1 - - - 72 - 73 - 1 - - - 185 - 186 - 1 - - - 716 - 717 - 1 - - - 2718 - 2719 - 1 - - - 3100 - 3101 - 1 - - - - - - - child - ruby_left_assignment_list - - - 12 - - - 1 - 2 - 6934 - - - - - - - child - index - - - 12 - - - 1 - 2 - 6934 - - - - - - - - - ruby_left_assignment_list_def - 3100 - - - id - 3100 - - - - - - ruby_match_pattern_def - 31 - - - id - 31 - - - pattern - 31 - - - value - 31 - - - - - id - pattern - - - 12 - - - 1 - 2 - 31 - - - - - - - id - value - - - 12 - - - 1 - 2 - 31 - - - - - - - pattern - id - - - 12 - - - 1 - 2 - 31 - - - - - - - pattern - value - - - 12 - - - 1 - 2 - 31 - - - - - - - value - id - - - 12 - - - 1 - 2 - 31 - - - - - - - value - pattern - - - 12 - - - 1 - 2 - 31 - - - - - - - - - ruby_method_body - 102401 - - - ruby_method - 102401 - - - body - 102401 - - - - - ruby_method - body - - - 12 - - - 1 - 2 - 102401 - - - - - - - body - ruby_method - - - 12 - - - 1 - 2 - 102401 - - - - - - - - - ruby_method_def - 103532 - - - id - 103532 - - - name - 103532 - - - - - id - name - - - 12 - - - 1 - 2 - 103532 - - - - - - - name - id - - - 12 - - - 1 - 2 - 103532 - - - - - - - - - ruby_method_parameters - 29519 - - - ruby_method - 29519 - - - parameters - 29519 - - - - - ruby_method - parameters - - - 12 - - - 1 - 2 - 29519 - - - - - - - parameters - ruby_method - - - 12 - - - 1 - 2 - 29519 - - - - - - - - - ruby_method_parameters_child - 51112 - - - ruby_method_parameters - 31001 - - - index - 41 - - - child - 51112 - - - - - ruby_method_parameters - index - - - 12 - - - 1 - 2 - 18836 - - - 2 - 3 - 7543 - - - 3 - 4 - 2840 - - - 4 - 15 - 1781 - - - - - - - ruby_method_parameters - child - - - 12 - - - 1 - 2 - 18836 - - - 2 - 3 - 7543 - - - 3 - 4 - 2840 - - - 4 - 15 - 1781 - - - - - - - index - ruby_method_parameters - - - 12 - - - 1 - 2 - 8 - - - 4 - 5 - 2 - - - 7 - 8 - 2 - - - 13 - 14 - 2 - - - 37 - 38 - 2 - - - 59 - 60 - 2 - - - 129 - 130 - 2 - - - 262 - 263 - 2 - - - 594 - 595 - 2 - - - 1541 - 1542 - 2 - - - 4056 - 4057 - 2 - - - 10336 - 10337 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 8 - - - 4 - 5 - 2 - - - 7 - 8 - 2 - - - 13 - 14 - 2 - - - 37 - 38 - 2 - - - 59 - 60 - 2 - - - 129 - 130 - 2 - - - 262 - 263 - 2 - - - 594 - 595 - 2 - - - 1541 - 1542 - 2 - - - 4056 - 4057 - 2 - - - 10336 - 10337 - 2 - - - - - - - child - ruby_method_parameters - - - 12 - - - 1 - 2 - 51112 - - - - - - - child - index - - - 12 - - - 1 - 2 - 51112 - - - - - - - - - ruby_method_parameters_def - 31208 - - - id - 31208 - - - - - - ruby_module_body - 22881 - - - ruby_module - 22881 - - - body - 22881 - - - - - ruby_module - body - - - 12 - - - 1 - 2 - 22881 - - - - - - - body - ruby_module - - - 12 - - - 1 - 2 - 22881 - - - - - - - - - ruby_module_def - 22962 - - - id - 22962 - - - name - 22962 - - - - - id - name - - - 12 - - - 1 - 2 - 22962 - - - - - - - name - id - - - 12 - - - 1 - 2 - 22962 - - - - - - - - - ruby_next_child - 256 - - - ruby_next - 256 - - - child - 256 - - - - - ruby_next - child - - - 12 - - - 1 - 2 - 256 - - - - - - - child - ruby_next - - - 12 - - - 1 - 2 - 256 - - - - - - - - - ruby_next_def - 2020 - - - id - 2020 - - - - - - ruby_operator_assignment_def - 6160 - - - id - 6160 - - - left - 6160 - - - operator - 16 - - - right - 6160 - - - - - id - left - - - 12 - - - 1 - 2 - 6160 - - - - - - - id - operator - - - 12 - - - 1 - 2 - 6160 - - - - - - - id - right - - - 12 - - - 1 - 2 - 6160 - - - - - - - left - id - - - 12 - - - 1 - 2 - 6160 - - - - - - - left - operator - - - 12 - - - 1 - 2 - 6160 - - - - - - - left - right - - - 12 - - - 1 - 2 - 6160 - - - - - - - operator - id - - - 12 - - - 3 - 4 - 2 - - - 4 - 5 - 2 - - - 10 - 11 - 2 - - - 11 - 12 - 2 - - - 64 - 65 - 2 - - - 707 - 708 - 2 - - - 1808 - 1809 - 2 - - - - - - - operator - left - - - 12 - - - 3 - 4 - 2 - - - 4 - 5 - 2 - - - 10 - 11 - 2 - - - 11 - 12 - 2 - - - 64 - 65 - 2 - - - 707 - 708 - 2 - - - 1808 - 1809 - 2 - - - - - - - operator - right - - - 12 - - - 3 - 4 - 2 - - - 4 - 5 - 2 - - - 10 - 11 - 2 - - - 11 - 12 - 2 - - - 64 - 65 - 2 - - - 707 - 708 - 2 - - - 1808 - 1809 - 2 - - - - - - - right - id - - - 12 - - - 1 - 2 - 6160 - - - - - - - right - left - - - 12 - - - 1 - 2 - 6160 - - - - - - - right - operator - - - 12 - - - 1 - 2 - 6160 - - - - - - - - - ruby_optional_parameter_def - 6556 - - - id - 6556 - - - name - 6556 - - - value - 6556 - - - - - id - name - - - 12 - - - 1 - 2 - 6556 - - - - - - - id - value - - - 12 - - - 1 - 2 - 6556 - - - - - - - name - id - - - 12 - - - 1 - 2 - 6556 - - - - - - - name - value - - - 12 - - - 1 - 2 - 6556 - - - - - - - value - id - - - 12 - - - 1 - 2 - 6556 - - - - - - - value - name - - - 12 - - - 1 - 2 - 6556 - - - - - - - - - ruby_pair_def - 254198 - - - id - 254198 - - - key__ - 254198 - - - - - id - key__ - - - 12 - - - 1 - 2 - 254198 - - - - - - - key__ - id - - - 12 - - - 1 - 2 - 254198 - - - - - - - - - ruby_pair_value - 254198 - - - ruby_pair - 254198 - - - value - 254198 - - - - - ruby_pair - value - - - 12 - - - 1 - 2 - 254198 - - - - - - - value - ruby_pair - - - 12 - - - 1 - 2 - 254198 - - - - - - - - - ruby_parenthesized_pattern_def - 8 - - - id - 8 - - - child - 8 - - - - - id - child - - - 12 - - - 1 - 2 - 8 - - - - - - - child - id - - - 12 - - - 1 - 2 - 8 - - - - - - - - - ruby_parenthesized_statements_child - 11347 - - - ruby_parenthesized_statements - 11258 - - - index - 4 - - - child - 11347 - - - - - ruby_parenthesized_statements - index - - - 12 - - - 1 - 2 - 11179 - - - 2 - 5 - 79 - - - - - - - ruby_parenthesized_statements - child - - - 12 - - - 1 - 2 - 11179 - - - 2 - 5 - 79 - - - - - - - index - ruby_parenthesized_statements - - - 12 - - - 1 - 2 - 1 - - - 9 - 10 - 1 - - - 79 - 80 - 1 - - - 11258 - 11259 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1 - - - 9 - 10 - 1 - - - 79 - 80 - 1 - - - 11258 - 11259 - 1 - - - - - - - child - ruby_parenthesized_statements - - - 12 - - - 1 - 2 - 11347 - - - - - - - child - index - - - 12 - - - 1 - 2 - 11347 - - - - - - - - - ruby_parenthesized_statements_def - 11296 - - - id - 11296 - - - - - - ruby_pattern_def - 4745 - - - id - 4745 - - - child - 4745 - - - - - id - child - - - 12 - - - 1 - 2 - 4745 - - - - - - - child - id - - - 12 - - - 1 - 2 - 4745 - - - - - - - - - ruby_program_child - 33893 - - - ruby_program - 10674 - - - index - 239 - - - child - 33893 - - - - - ruby_program - index - - - 12 - - - 1 - 2 - 3956 - - - 2 - 3 - 2531 - - - 3 - 4 - 1772 - - - 4 - 5 - 794 - - - 5 - 8 - 902 - - - 8 - 81 - 716 - - - - - - - ruby_program - child - - - 12 - - - 1 - 2 - 3956 - - - 2 - 3 - 2531 - - - 3 - 4 - 1772 - - - 4 - 5 - 794 - - - 5 - 8 - 902 - - - 8 - 81 - 716 - - - - - - - index - ruby_program - - - 12 - - - 1 - 2 - 50 - - - 2 - 3 - 29 - - - 3 - 7 - 17 - - - 8 - 11 - 17 - - - 11 - 15 - 17 - - - 16 - 23 - 17 - - - 26 - 36 - 17 - - - 38 - 60 - 17 - - - 67 - 129 - 17 - - - 145 - 397 - 17 - - - 540 - 3560 - 14 - - - - - - - index - child - - - 12 - - - 1 - 2 - 50 - - - 2 - 3 - 29 - - - 3 - 7 - 17 - - - 8 - 11 - 17 - - - 11 - 15 - 17 - - - 16 - 23 - 17 - - - 26 - 36 - 17 - - - 38 - 60 - 17 - - - 67 - 129 - 17 - - - 145 - 397 - 17 - - - 540 - 3560 - 14 - - - - - - - child - ruby_program - - - 12 - - - 1 - 2 - 33893 - - - - - - - child - index - - - 12 - - - 1 - 2 - 33893 - - - - - - - - - ruby_program_def - 18697 - - - id - 18697 - - - - - - ruby_range_begin - 4748 - - - ruby_range - 4748 - - - begin - 4748 - - - - - ruby_range - begin - - - 12 - - - 1 - 2 - 4748 - - - - - - - begin - ruby_range - - - 12 - - - 1 - 2 - 4748 - - - - - - - - - ruby_range_def - 5066 - - - id - 5066 - - - operator - 2 - - - - - id - operator - - - 12 - - - 1 - 2 - 5066 - - - - - - - operator - id - - - 12 - - - 1376 - 1377 - 1 - - - 3690 - 3691 - 1 - - - - - - - - - ruby_range_end - 4818 - - - ruby_range - 4818 - - - end - 4818 - - - - - ruby_range - end - - - 12 - - - 1 - 2 - 4818 - - - - - - - end - ruby_range - - - 12 - - - 1 - 2 - 4818 - - - - - - - - - ruby_rational_def - 166 - - - id - 166 - - - child - 166 - - - - - id - child - - - 12 - - - 1 - 2 - 166 - - - - - - - child - id - - - 12 - - - 1 - 2 - 166 - - - - - - - - - ruby_redo_child - 0 - - - ruby_redo - 0 - - - child - 0 - - - - - ruby_redo - child - - - 12 - - - 1 - 2 - 2 - - - - - - - child - ruby_redo - - - 12 - - - 1 - 2 - 2 - - - - - - - - - ruby_redo_def - 34 - - - id - 34 - - - - - - ruby_regex_child - 45368 - - - ruby_regex - 13665 - - - index - 146 - - - child - 45368 - - - - - ruby_regex - index - - - 12 - - - 1 - 2 - 7006 - - - 2 - 3 - 800 - - - 3 - 4 - 1868 - - - 4 - 5 - 500 - - - 5 - 6 - 1124 - - - 6 - 8 - 1031 - - - 8 - 16 - 1094 - - - 16 - 50 - 236 - - - - - - - ruby_regex - child - - - 12 - - - 1 - 2 - 7006 - - - 2 - 3 - 800 - - - 3 - 4 - 1868 - - - 4 - 5 - 500 - - - 5 - 6 - 1124 - - - 6 - 8 - 1031 - - - 8 - 16 - 1094 - - - 16 - 50 - 236 - - - - - - - index - ruby_regex - - - 12 - - - 1 - 2 - 17 - - - 4 - 5 - 11 - - - 6 - 7 - 2 - - - 7 - 8 - 11 - - - 8 - 15 - 11 - - - 15 - 18 - 8 - - - 18 - 21 - 11 - - - 21 - 31 - 11 - - - 32 - 80 - 11 - - - 103 - 184 - 11 - - - 249 - 445 - 11 - - - 696 - 1331 - 11 - - - 1953 - 4557 - 8 - - - - - - - index - child - - - 12 - - - 1 - 2 - 17 - - - 4 - 5 - 11 - - - 6 - 7 - 2 - - - 7 - 8 - 11 - - - 8 - 15 - 11 - - - 15 - 18 - 8 - - - 18 - 21 - 11 - - - 21 - 31 - 11 - - - 32 - 80 - 11 - - - 103 - 184 - 11 - - - 249 - 445 - 11 - - - 696 - 1331 - 11 - - - 1953 - 4557 - 8 - - - - - - - child - ruby_regex - - - 12 - - - 1 - 2 - 45368 - - - - - - - child - index - - - 12 - - - 1 - 2 - 45368 - - - - - - - - - ruby_regex_def - 13680 - - - id - 13680 - - - - - - ruby_rescue_body - 2050 - - - ruby_rescue - 2050 - - - body - 2050 - - - - - ruby_rescue - body - - - 12 - - - 1 - 2 - 2050 - - - - - - - body - ruby_rescue - - - 12 - - - 1 - 2 - 2050 - - - - - - - - - ruby_rescue_def - 2299 - - - id - 2299 - - - - - - ruby_rescue_exceptions - 1904 - - - ruby_rescue - 1904 - - - exceptions - 1904 - - - - - ruby_rescue - exceptions - - - 12 - - - 1 - 2 - 1904 - - - - - - - exceptions - ruby_rescue - - - 12 - - - 1 - 2 - 1904 - - - - - - - - - ruby_rescue_modifier_def - 458 - - - id - 458 - - - body - 458 - - - handler - 458 - - - - - id - body - - - 12 - - - 1 - 2 - 458 - - - - - - - id - handler - - - 12 - - - 1 - 2 - 458 - - - - - - - body - id - - - 12 - - - 1 - 2 - 458 - - - - - - - body - handler - - - 12 - - - 1 - 2 - 458 - - - - - - - handler - id - - - 12 - - - 1 - 2 - 458 - - - - - - - handler - body - - - 12 - - - 1 - 2 - 458 - - - - - - - - - ruby_rescue_variable - 935 - - - ruby_rescue - 935 - - - variable - 935 - - - - - ruby_rescue - variable - - - 12 - - - 1 - 2 - 935 - - - - - - - variable - ruby_rescue - - - 12 - - - 1 - 2 - 935 - - - - - - - - - ruby_rest_assignment_child - 392 - - - ruby_rest_assignment - 392 - - - child - 392 - - - - - ruby_rest_assignment - child - - - 12 - - - 1 - 2 - 392 - - - - - - - child - ruby_rest_assignment - - - 12 - - - 1 - 2 - 392 - - - - - - - - - ruby_rest_assignment_def - 414 - - - id - 414 - - - - - - ruby_retry_child - 0 - - - ruby_retry - 0 - - - child - 0 - - - - - ruby_retry - child - - - 12 - - - 1 - 2 - 2 - - - - - - - child - ruby_retry - - - 12 - - - 1 - 2 - 2 - - - - - - - - - ruby_retry_def - 58 - - - id - 58 - - - - - - ruby_return_child - 4938 - - - ruby_return - 4938 - - - child - 4938 - - - - - ruby_return - child - - - 12 - - - 1 - 2 - 4938 - - - - - - - child - ruby_return - - - 12 - - - 1 - 2 - 4938 - - - - - - - - - ruby_return_def - 7979 - - - id - 7979 - - - - - - ruby_right_assignment_list_child - 2741 - - - ruby_right_assignment_list - 1280 - - - index - 14 - - - child - 2741 - - - - - ruby_right_assignment_list - index - - - 12 - - - 2 - 3 - 1136 - - - 3 - 4 - 113 - - - 4 - 6 - 29 - - - - - - - ruby_right_assignment_list - child - - - 12 - - - 2 - 3 - 1136 - - - 3 - 4 - 113 - - - 4 - 6 - 29 - - - - - - - index - ruby_right_assignment_list - - - 12 - - - 2 - 3 - 2 - - - 10 - 11 - 2 - - - 48 - 49 - 2 - - - 427 - 428 - 5 - - - - - - - index - child - - - 12 - - - 2 - 3 - 2 - - - 10 - 11 - 2 - - - 48 - 49 - 2 - - - 427 - 428 - 5 - - - - - - - child - ruby_right_assignment_list - - - 12 - - - 1 - 2 - 2741 - - - - - - - child - index - - - 12 - - - 1 - 2 - 2741 - - - - - - - - - ruby_right_assignment_list_def - 1280 - - - id - 1280 - - - - - - ruby_scope_resolution_def - 87113 - - - id - 87113 - - - name - 87113 - - - - - id - name - - - 12 - - - 1 - 2 - 87113 - - - - - - - name - id - - - 12 - - - 1 - 2 - 87113 - - - - - - - - - ruby_scope_resolution_scope - 85203 - - - ruby_scope_resolution - 85203 - - - scope - 85203 - - - - - ruby_scope_resolution - scope - - - 12 - - - 1 - 2 - 85203 - - - - - - - scope - ruby_scope_resolution - - - 12 - - - 1 - 2 - 85203 - - - - - - - - - ruby_setter_def - 656 - - - id - 656 - - - name - 656 - - - - - id - name - - - 12 - - - 1 - 2 - 656 - - - - - - - name - id - - - 12 - - - 1 - 2 - 656 - - - - - - - - - ruby_singleton_class_body - 677 - - - ruby_singleton_class - 677 - - - body - 677 - - - - - ruby_singleton_class - body - - - 12 - - - 1 - 2 - 677 - - - - - - - body - ruby_singleton_class - - - 12 - - - 1 - 2 - 677 - - - - - - - - - ruby_singleton_class_def - 677 - - - id - 677 - - - value - 677 - - - - - id - value - - - 12 - - - 1 - 2 - 677 - - - - - - - value - id - - - 12 - - - 1 - 2 - 677 - - - - - - - - - ruby_singleton_method_body - 6313 - - - ruby_singleton_method - 6313 - - - body - 6313 - - - - - ruby_singleton_method - body - - - 12 - - - 1 - 2 - 6313 - - - - - - - body - ruby_singleton_method - - - 12 - - - 1 - 2 - 6313 - - - - - - - - - ruby_singleton_method_def - 6325 - - - id - 6325 - - - name - 6325 - - - object - 6325 - - - - - id - name - - - 12 - - - 1 - 2 - 6325 - - - - - - - id - object - - - 12 - - - 1 - 2 - 6325 - - - - - - - name - id - - - 12 - - - 1 - 2 - 6325 - - - - - - - name - object - - - 12 - - - 1 - 2 - 6325 - - - - - - - object - id - - - 12 - - - 1 - 2 - 6325 - - - - - - - object - name - - - 12 - - - 1 - 2 - 6325 - - - - - - - - - ruby_singleton_method_parameters - 3929 - - - ruby_singleton_method - 3929 - - - parameters - 3929 - - - - - ruby_singleton_method - parameters - - - 12 - - - 1 - 2 - 3929 - - - - - - - parameters - ruby_singleton_method - - - 12 - - - 1 - 2 - 3929 - - - - - - - - - ruby_splat_argument_child - 3605 - - - ruby_splat_argument - 3605 - - - child - 3605 - - - - - ruby_splat_argument - child - - - 12 - - - 1 - 2 - 3605 - - - - - - - child - ruby_splat_argument - - - 12 - - - 1 - 2 - 3605 - - - - - - - - - ruby_splat_argument_def - 3606 - - - id - 3606 - - - - - - ruby_splat_parameter_def - 3014 - - - id - 3014 - - - - - - ruby_splat_parameter_name - 2297 - - - ruby_splat_parameter - 2297 - - - name - 2297 - - - - - ruby_splat_parameter - name - - - 12 - - - 1 - 2 - 2297 - - - - - - - name - ruby_splat_parameter - - - 12 - - - 1 - 2 - 2297 - - - - - - - - - ruby_string_array_child - 13136 - - - ruby_string_array - 4120 - - - index - 606 - - - child - 13136 - - - - - ruby_string_array - index - - - 12 - - - 1 - 2 - 1350 - - - 2 - 3 - 1304 - - - 3 - 4 - 630 - - - 4 - 5 - 356 - - - 5 - 10 - 332 - - - 10 - 607 - 148 - - - - - - - ruby_string_array - child - - - 12 - - - 1 - 2 - 1350 - - - 2 - 3 - 1304 - - - 3 - 4 - 630 - - - 4 - 5 - 356 - - - 5 - 10 - 332 - - - 10 - 607 - 148 - - - - - - - index - ruby_string_array - - - 12 - - - 1 - 2 - 506 - - - 2 - 10 - 48 - - - 11 - 266 - 46 - - - 344 - 4121 - 6 - - - - - - - index - child - - - 12 - - - 1 - 2 - 506 - - - 2 - 10 - 48 - - - 11 - 266 - 46 - - - 344 - 4121 - 6 - - - - - - - child - ruby_string_array - - - 12 - - - 1 - 2 - 13136 - - - - - - - child - index - - - 12 - - - 1 - 2 - 13136 - - - - - - - - - ruby_string_array_def - 4287 - - - id - 4287 - - - - - - ruby_string_child - 559228 - - - ruby_string__ - 483542 - - - index - 281 - - - child - 559228 - - - - - ruby_string__ - index - - - 12 - - - 1 - 2 - 454555 - - - 2 - 282 - 28987 - - - - - - - ruby_string__ - child - - - 12 - - - 1 - 2 - 454555 - - - 2 - 282 - 28987 - - - - - - - index - ruby_string__ - - - 12 - - - 1 - 2 - 95 - - - 2 - 3 - 34 - - - 5 - 6 - 64 - - - 6 - 9 - 22 - - - 9 - 37 - 22 - - - 37 - 108 - 22 - - - 129 - 483543 - 22 - - - - - - - index - child - - - 12 - - - 1 - 2 - 95 - - - 2 - 3 - 34 - - - 5 - 6 - 64 - - - 6 - 9 - 22 - - - 9 - 37 - 22 - - - 37 - 108 - 22 - - - 129 - 483543 - 22 - - - - - - - child - ruby_string__ - - - 12 - - - 1 - 2 - 559228 - - - - - - - child - index - - - 12 - - - 1 - 2 - 559228 - - - - - - - - - ruby_string_def - 490602 - - - id - 490602 - - - - - - ruby_subshell_child - 551 - - - ruby_subshell - 359 - - - index - 32 - - - child - 551 - - - - - ruby_subshell - index - - - 12 - - - 1 - 2 - 263 - - - 2 - 3 - 53 - - - 3 - 5 - 32 - - - 5 - 12 - 8 - - - - - - - ruby_subshell - child - - - 12 - - - 1 - 2 - 263 - - - 2 - 3 - 53 - - - 3 - 5 - 32 - - - 5 - 12 - 8 - - - - - - - index - ruby_subshell - - - 12 - - - 1 - 2 - 11 - - - 2 - 3 - 5 - - - 3 - 4 - 2 - - - 7 - 8 - 2 - - - 14 - 15 - 2 - - - 32 - 33 - 2 - - - 120 - 121 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 11 - - - 2 - 3 - 5 - - - 3 - 4 - 2 - - - 7 - 8 - 2 - - - 14 - 15 - 2 - - - 32 - 33 - 2 - - - 120 - 121 - 2 - - - - - - - child - ruby_subshell - - - 12 - - - 1 - 2 - 551 - - - - - - - child - index - - - 12 - - - 1 - 2 - 551 - - - - - - - - - ruby_subshell_def - 359 - - - id - 359 - - - - - - ruby_superclass_def - 13806 - - - id - 13806 - - - child - 13806 - - - - - id - child - - - 12 - - - 1 - 2 - 13806 - - - - - - - child - id - - - 12 - - - 1 - 2 - 13806 - - - - - - - - - ruby_symbol_array_child - 8435 - - - ruby_symbol_array - 2240 - - - index - 233 - - - child - 8435 - - - - - ruby_symbol_array - index - - - 12 - - - 1 - 2 - 219 - - - 2 - 3 - 1129 - - - 3 - 4 - 347 - - - 4 - 5 - 160 - - - 5 - 8 - 189 - - - 8 - 24 - 170 - - - 24 - 100 - 23 - - - - - - - ruby_symbol_array - child - - - 12 - - - 1 - 2 - 219 - - - 2 - 3 - 1129 - - - 3 - 4 - 347 - - - 4 - 5 - 160 - - - 5 - 8 - 189 - - - 8 - 24 - 170 - - - 24 - 100 - 23 - - - - - - - index - ruby_symbol_array - - - 12 - - - 1 - 2 - 9 - - - 2 - 3 - 139 - - - 4 - 8 - 18 - - - 8 - 17 - 18 - - - 19 - 41 - 18 - - - 44 - 163 - 18 - - - 230 - 949 - 9 - - - - - - - index - child - - - 12 - - - 1 - 2 - 9 - - - 2 - 3 - 139 - - - 4 - 8 - 18 - - - 8 - 17 - 18 - - - 19 - 41 - 18 - - - 44 - 163 - 18 - - - 230 - 949 - 9 - - - - - - - child - ruby_symbol_array - - - 12 - - - 1 - 2 - 8435 - - - - - - - child - index - - - 12 - - - 1 - 2 - 8435 - - - - - - - - - ruby_symbol_array_def - 2240 - - - id - 2240 - - - - - - ruby_test_pattern_def - 5 - - - id - 5 - - - pattern - 5 - - - value - 5 - - - - - id - pattern - - - 12 - - - 1 - 2 - 5 - - - - - - - id - value - - - 12 - - - 1 - 2 - 5 - - - - - - - pattern - id - - - 12 - - - 1 - 2 - 5 - - - - - - - pattern - value - - - 12 - - - 1 - 2 - 5 - - - - - - - value - id - - - 12 - - - 1 - 2 - 5 - - - - - - - value - pattern - - - 12 - - - 1 - 2 - 5 - - - - - - - - - ruby_then_child - 37016 - - - ruby_then - 22229 - - - index - 85 - - - child - 37016 - - - - - ruby_then - index - - - 12 - - - 1 - 2 - 13943 - - - 2 - 3 - 5070 - - - 3 - 4 - 1817 - - - 4 - 37 - 1398 - - - - - - - ruby_then - child - - - 12 - - - 1 - 2 - 13943 - - - 2 - 3 - 5070 - - - 3 - 4 - 1817 - - - 4 - 37 - 1398 - - - - - - - index - ruby_then - - - 12 - - - 1 - 2 - 30 - - - 2 - 4 - 4 - - - 4 - 5 - 9 - - - 6 - 8 - 4 - - - 8 - 9 - 4 - - - 10 - 19 - 7 - - - 30 - 61 - 7 - - - 98 - 310 - 7 - - - 592 - 3508 - 7 - - - 9408 - 9409 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 30 - - - 2 - 4 - 4 - - - 4 - 5 - 9 - - - 6 - 8 - 4 - - - 8 - 9 - 4 - - - 10 - 19 - 7 - - - 30 - 61 - 7 - - - 98 - 310 - 7 - - - 592 - 3508 - 7 - - - 9408 - 9409 - 2 - - - - - - - child - ruby_then - - - 12 - - - 1 - 2 - 37016 - - - - - - - child - index - - - 12 - - - 1 - 2 - 37016 - - - - - - - - - ruby_then_def - 22229 - - - id - 22229 - - - - - - ruby_tokeninfo - 6351611 - - - id - 6351611 - - - kind - 56 - - - value - 275925 - - - - - id - kind - - - 12 - - - 1 - 2 - 6351611 - - - - - - - id - value - - - 12 - - - 1 - 2 - 6351611 - - - - - - - kind - id - - - 12 - - - 1 - 2 - 4 - - - 49 - 160 - 4 - - - 291 - 443 - 4 - - - 2054 - 2055 - 2 - - - 2462 - 2463 - 4 - - - 5047 - 5260 - 4 - - - 5496 - 7346 - 4 - - - 10365 - 10609 - 4 - - - 15376 - 22709 - 4 - - - 31415 - 70704 - 4 - - - 77014 - 106932 - 4 - - - 129596 - 673263 - 4 - - - 1509036 - 1509037 - 2 - - - - - - - kind - value - - - 12 - - - 1 - 2 - 16 - - - 6 - 26 - 4 - - - 36 - 48 - 4 - - - 68 - 121 - 4 - - - 151 - 181 - 4 - - - 1509 - 2060 - 4 - - - 3983 - 4628 - 4 - - - 5781 - 9380 - 4 - - - 13063 - 24102 - 4 - - - 58689 - 58690 - 2 - - - - - - - value - id - - - 12 - - - 1 - 2 - 164156 - - - 2 - 3 - 41140 - - - 3 - 4 - 19333 - - - 4 - 7 - 22761 - - - 7 - 29 - 20750 - - - 29 - 243390 - 7783 - - - - - - - value - kind - - - 12 - - - 1 - 2 - 262839 - - - 2 - 5 - 13085 - - - - - - - - - ruby_unary_def - 14535 - - - id - 14535 - - - operand - 14535 - - - operator - 6 - - - - - id - operand - - - 12 - - - 1 - 2 - 14535 - - - - - - - id - operator - - - 12 - - - 1 - 2 - 14535 - - - - - - - operand - id - - - 12 - - - 1 - 2 - 14535 - - - - - - - operand - operator - - - 12 - - - 1 - 2 - 14535 - - - - - - - operator - id - - - 12 - - - 97 - 98 - 1 - - - 172 - 173 - 1 - - - 947 - 948 - 1 - - - 1369 - 1370 - 1 - - - 2120 - 2121 - 1 - - - 9830 - 9831 - 1 - - - - - - - operator - operand - - - 12 - - - 97 - 98 - 1 - - - 172 - 173 - 1 - - - 947 - 948 - 1 - - - 1369 - 1370 - 1 - - - 2120 - 2121 - 1 - - - 9830 - 9831 - 1 - - - - - - - - - ruby_undef_child - 183 - - - ruby_undef - 182 - - - index - 2 - - - child - 183 - - - - - ruby_undef - index - - - 12 - - - 1 - 2 - 181 - - - 2 - 3 - 1 - - - - - - - ruby_undef - child - - - 12 - - - 1 - 2 - 181 - - - 2 - 3 - 1 - - - - - - - index - ruby_undef - - - 12 - - - 1 - 2 - 1 - - - 182 - 183 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1 - - - 182 - 183 - 1 - - - - - - - child - ruby_undef - - - 12 - - - 1 - 2 - 183 - - - - - - - child - index - - - 12 - - - 1 - 2 - 183 - - - - - - - - - ruby_undef_def - 182 - - - id - 182 - - - - - - ruby_unless_alternative - 43 - - - ruby_unless - 43 - - - alternative - 43 - - - - - ruby_unless - alternative - - - 12 - - - 1 - 2 - 43 - - - - - - - alternative - ruby_unless - - - 12 - - - 1 - 2 - 43 - - - - - - - - - ruby_unless_consequence - 2721 - - - ruby_unless - 2721 - - - consequence - 2721 - - - - - ruby_unless - consequence - - - 12 - - - 1 - 2 - 2721 - - - - - - - consequence - ruby_unless - - - 12 - - - 1 - 2 - 2721 - - - - - - - - - ruby_unless_def - 2723 - - - id - 2723 - - - condition - 2723 - - - - - id - condition - - - 12 - - - 1 - 2 - 2723 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 2723 - - - - - - - - - ruby_unless_guard_def - 4 - - - id - 4 - - - condition - 4 - - - - - id - condition - - - 12 - - - 1 - 2 - 4 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 4 - - - - - - - - - ruby_unless_modifier_def - 3416 - - - id - 3416 - - - body - 3416 - - - condition - 3416 - - - - - id - body - - - 12 - - - 1 - 2 - 3416 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 3416 - - - - - - - body - id - - - 12 - - - 1 - 2 - 3416 - - - - - - - body - condition - - - 12 - - - 1 - 2 - 3416 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 3416 - - - - - - - condition - body - - - 12 - - - 1 - 2 - 3416 - - - - - - - - - ruby_until_def - 126 - - - id - 126 - - - body - 126 - - - condition - 126 - - - - - id - body - - - 12 - - - 1 - 2 - 126 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 126 - - - - - - - body - id - - - 12 - - - 1 - 2 - 126 - - - - - - - body - condition - - - 12 - - - 1 - 2 - 126 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 126 - - - - - - - condition - body - - - 12 - - - 1 - 2 - 126 - - - - - - - - - ruby_until_modifier_def - 238 - - - id - 238 - - - body - 238 - - - condition - 238 - - - - - id - body - - - 12 - - - 1 - 2 - 238 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 238 - - - - - - - body - id - - - 12 - - - 1 - 2 - 238 - - - - - - - body - condition - - - 12 - - - 1 - 2 - 238 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 238 - - - - - - - condition - body - - - 12 - - - 1 - 2 - 238 - - - - - - - - - ruby_variable_reference_pattern_def - 5 - - - id - 5 - - - name - 5 - - - - - id - name - - - 12 - - - 1 - 2 - 5 - - - - - - - name - id - - - 12 - - - 1 - 2 - 5 - - - - - - - - - ruby_when_body - 3790 - - - ruby_when - 3790 - - - body - 3790 - - - - - ruby_when - body - - - 12 - - - 1 - 2 - 3790 - - - - - - - body - ruby_when - - - 12 - - - 1 - 2 - 3790 - - - - - - - - - ruby_when_def - 3882 - - - id - 3882 - - - - - - ruby_when_pattern - 4745 - - - ruby_when - 3882 - - - index - 15 - - - pattern - 4745 - - - - - ruby_when - index - - - 12 - - - 1 - 2 - 3393 - - - 2 - 3 - 330 - - - 3 - 16 - 159 - - - - - - - ruby_when - pattern - - - 12 - - - 1 - 2 - 3393 - - - 2 - 3 - 330 - - - 3 - 16 - 159 - - - - - - - index - ruby_when - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 2 - - - 4 - 5 - 2 - - - 5 - 6 - 1 - - - 10 - 11 - 1 - - - 19 - 20 - 1 - - - 31 - 32 - 1 - - - 44 - 45 - 1 - - - 90 - 91 - 1 - - - 159 - 160 - 1 - - - 489 - 490 - 1 - - - 3882 - 3883 - 1 - - - - - - - index - pattern - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 2 - - - 4 - 5 - 2 - - - 5 - 6 - 1 - - - 10 - 11 - 1 - - - 19 - 20 - 1 - - - 31 - 32 - 1 - - - 44 - 45 - 1 - - - 90 - 91 - 1 - - - 159 - 160 - 1 - - - 489 - 490 - 1 - - - 3882 - 3883 - 1 - - - - - - - pattern - ruby_when - - - 12 - - - 1 - 2 - 4745 - - - - - - - pattern - index - - - 12 - - - 1 - 2 - 4745 - - - - - - - - - ruby_while_def - 1413 - - - id - 1413 - - - body - 1413 - - - condition - 1413 - - - - - id - body - - - 12 - - - 1 - 2 - 1413 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 1413 - - - - - - - body - id - - - 12 - - - 1 - 2 - 1413 - - - - - - - body - condition - - - 12 - - - 1 - 2 - 1413 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 1413 - - - - - - - condition - body - - - 12 - - - 1 - 2 - 1413 - - - - - - - - - ruby_while_modifier_def - 198 - - - id - 198 - - - body - 198 - - - condition - 198 - - - - - id - body - - - 12 - - - 1 - 2 - 198 - - - - - - - id - condition - - - 12 - - - 1 - 2 - 198 - - - - - - - body - id - - - 12 - - - 1 - 2 - 198 - - - - - - - body - condition - - - 12 - - - 1 - 2 - 198 - - - - - - - condition - id - - - 12 - - - 1 - 2 - 198 - - - - - - - condition - body - - - 12 - - - 1 - 2 - 198 - - - - - - - - - ruby_yield_child - 1103 - - - ruby_yield - 1103 - - - child - 1103 - - - - - ruby_yield - child - - - 12 - - - 1 - 2 - 1103 - - - - - - - child - ruby_yield - - - 12 - - - 1 - 2 - 1103 - - - - - - - - - ruby_yield_def - 2450 - - - id - 2450 - - - - - - sourceLocationPrefix - 13 - - - prefix - 13 - - - - - - yaml - 0 - - - id - 0 - - - kind - 0 - - - parent - 0 - - - idx - 0 - - - tag - 0 - - - tostring - 0 - - - - - id - kind - - - 12 - - - 1 - 2 - 2 - - - - - - - id - parent - - - 12 - - - 1 - 2 - 2 - - - - - - - id - idx - - - 12 - - - 1 - 2 - 2 - - - - - - - id - tag - - - 12 - - - 1 - 2 - 2 - - - - - - - id - tostring - - - 12 - - - 1 - 2 - 2 - - - - - - - kind - id - - - 12 - - - - - - kind - parent - - - 12 - - - - - - kind - idx - - - 12 - - - - - - kind - tag - - - 12 - - - - - - kind - tostring - - - 12 - - - - - - parent - id - - - 12 - - - - - - parent - kind - - - 12 - - - - - - parent - idx - - - 12 - - - - - - parent - tag - - - 12 - - - - - - parent - tostring - - - 12 - - - - - - idx - id - - - 12 - - - - - - idx - kind - - - 12 - - - - - - idx - parent - - - 12 - - - - - - idx - tag - - - 12 - - - - - - idx - tostring - - - 12 - - - - - - tag - id - - - 12 - - - - - - tag - kind - - - 12 - - - - - - tag - parent - - - 12 - - - - - - tag - idx - - - 12 - - - - - - tag - tostring - - - 12 - - - - - - tostring - id - - - 12 - - - - - - tostring - kind - - - 12 - - - - - - tostring - parent - - - 12 - - - - - - tostring - idx - - - 12 - - - - - - tostring - tag - - - 12 - - - - - - - - databaseMetadata - 1 - - - metadataKey - 1 - - - value - 1 - - - - - metadataKey - value - - - 12 - - - - - - value - metadataKey - - - 12 - - - - - - - - overlayChangedFiles - 50 - - - path - 50 - - - - - - yaml_aliases - 0 - - - alias - 0 - - - target - 0 - - - - - alias - target - - - 12 - - - 1 - 2 - 2 - - - - - - - target - alias - - - 12 - - - - - - - - yaml_anchors - 0 - - - node - 0 - - - anchor - 0 - - - - - node - anchor - - - 12 - - - 1 - 2 - 2 - - - - - - - anchor - node - - - 12 - - - - - - - - yaml_errors - 0 - - - id - 0 - - - message - 0 - - - - - id - message - - - 12 - - - 1 - 2 - 2 - - - - - - - message - id - - - 12 - - - - - - - - yaml_locations - 0 - - - locatable - 0 - - - location - 0 - - - - - locatable - location - - - 12 - - - 1 - 2 - 2 - - - - - - - location - locatable - - - 12 - - - - - - - - yaml_scalars - 0 - - - scalar - 0 - - - style - 0 - - - value - 0 - - - - - scalar - style - - - 12 - - - 1 - 2 - 2 - - - - - - - scalar - value - - - 12 - - - 1 - 2 - 2 - - - - - - - style - scalar - - - 12 - - - - - - style - value - - - 12 - - - - - - value - scalar - - - 12 - - - - - - value - style - - - 12 - - - - - - - + + diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index ddefff5e95b8..cb4c0ae7874a 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 1.6.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `rb/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `rb/reflected-xss`, `rb/stored-xss` and `rb/html-constructed-from-input` has been increased from 6.1 (medium) to 7.8 (high). + +## 1.5.11 + +No user-facing changes. + +## 1.5.10 + +No user-facing changes. + ## 1.5.9 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.5.10.md b/ruby/ql/src/change-notes/released/1.5.10.md new file mode 100644 index 000000000000..829c5f1f1a1a --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.10.md @@ -0,0 +1,3 @@ +## 1.5.10 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.5.11.md b/ruby/ql/src/change-notes/released/1.5.11.md new file mode 100644 index 000000000000..5f42fc9133da --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.11.md @@ -0,0 +1,3 @@ +## 1.5.11 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.6.0.md b/ruby/ql/src/change-notes/released/1.6.0.md new file mode 100644 index 000000000000..0398dab7aaf4 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.6.0.md @@ -0,0 +1,6 @@ +## 1.6.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `rb/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The `@security-severity` metadata of `rb/reflected-xss`, `rb/stored-xss` and `rb/html-constructed-from-input` has been increased from 6.1 (medium) to 7.8 (high). diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 5ac7d08bfbfc..c4f0b07d5336 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.9 +lastReleaseVersion: 1.6.0 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 3ba280ea3785..191689565de4 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.5.9 +version: 1.6.1-dev groups: - ruby - queries diff --git a/ruby/ql/src/queries/security/cwe-079/ReflectedXSS.ql b/ruby/ql/src/queries/security/cwe-079/ReflectedXSS.ql index 8cc60618cc5c..04eed164046d 100644 --- a/ruby/ql/src/queries/security/cwe-079/ReflectedXSS.ql +++ b/ruby/ql/src/queries/security/cwe-079/ReflectedXSS.ql @@ -4,7 +4,7 @@ * allows for a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @sub-severity high * @precision high * @id rb/reflected-xss diff --git a/ruby/ql/src/queries/security/cwe-079/StoredXSS.ql b/ruby/ql/src/queries/security/cwe-079/StoredXSS.ql index a621aee00b03..a2a1752f7f4f 100644 --- a/ruby/ql/src/queries/security/cwe-079/StoredXSS.ql +++ b/ruby/ql/src/queries/security/cwe-079/StoredXSS.ql @@ -4,7 +4,7 @@ * a stored cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id rb/stored-xss * @tags security diff --git a/ruby/ql/src/queries/security/cwe-079/UnsafeHtmlConstruction.ql b/ruby/ql/src/queries/security/cwe-079/UnsafeHtmlConstruction.ql index c1527783fc34..3fa40cd6f919 100644 --- a/ruby/ql/src/queries/security/cwe-079/UnsafeHtmlConstruction.ql +++ b/ruby/ql/src/queries/security/cwe-079/UnsafeHtmlConstruction.ql @@ -4,7 +4,7 @@ * user to perform a cross-site scripting attack. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id rb/html-constructed-from-input * @tags security diff --git a/ruby/ql/src/queries/security/cwe-117/LogInjection.ql b/ruby/ql/src/queries/security/cwe-117/LogInjection.ql index 624c2f90e64d..50a4a718e32d 100644 --- a/ruby/ql/src/queries/security/cwe-117/LogInjection.ql +++ b/ruby/ql/src/queries/security/cwe-117/LogInjection.ql @@ -4,7 +4,7 @@ * insertion of forged log entries by a malicious user. * @kind path-problem * @problem.severity error - * @security-severity 7.8 + * @security-severity 6.1 * @precision medium * @id rb/log-injection * @tags security diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 6f7d27e23b40..eea5bd6e89d8 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.2.11 + +No user-facing changes. + +## 0.2.10 + +No user-facing changes. + +## 0.2.9 + +No user-facing changes. + ## 0.2.8 ### Minor Analysis Improvements diff --git a/rust/ql/lib/change-notes/released/0.2.10.md b/rust/ql/lib/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/rust/ql/lib/change-notes/released/0.2.11.md b/rust/ql/lib/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/rust/ql/lib/change-notes/released/0.2.9.md b/rust/ql/lib/change-notes/released/0.2.9.md new file mode 100644 index 000000000000..7bca075286f9 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.9.md @@ -0,0 +1,3 @@ +## 0.2.9 + +No user-facing changes. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index 66ad7f587f80..2ee635b99371 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.11 diff --git a/rust/ql/lib/codeql/files/FileSystem.qll b/rust/ql/lib/codeql/files/FileSystem.qll index cfab33b9a440..93ff7be604e0 100644 --- a/rust/ql/lib/codeql/files/FileSystem.qll +++ b/rust/ql/lib/codeql/files/FileSystem.qll @@ -45,13 +45,16 @@ extensible predicate additionalExternalFile(string relativePath); /** A file. */ class File extends Container, Impl::File { + pragma[nomagic] + private predicate isAdditionalExternalFile() { additionalExternalFile(this.getRelativePath()) } + /** * Holds if this file was extracted from the source code of the target project * (rather than another location such as inside a dependency). */ predicate fromSource() { exists(ExtractorStep s | s.getAction() = "Extract" and s.getFile() = this) and - not additionalExternalFile(this.getRelativePath()) + not this.isAdditionalExternalFile() } /** diff --git a/rust/ql/lib/codeql/rust/dataflow/FlowBarrier.qll b/rust/ql/lib/codeql/rust/dataflow/FlowBarrier.qll new file mode 100644 index 000000000000..49e1d6769219 --- /dev/null +++ b/rust/ql/lib/codeql/rust/dataflow/FlowBarrier.qll @@ -0,0 +1,85 @@ +/** + * Provides classes and predicates for defining barriers and barrier guards. + * + * Flow barriers and barrier guards defined here feed into data flow configurations as follows: + * + * ```text + * data from *.model.yml | QL extensions of FlowBarrier::Range + * v v + * FlowBarrier (associated with a models-as-data kind string) + * v + * barrierNode predicate | other QL defined barriers, for example using concepts + * v v + * various Barrier classes for specific data flow configurations + * + * data from *.model.yml | QL extensions of FlowBarrierGuard::Range + * v v + * FlowBarrierGuard (associated with a models-as-data kind string) + * v + * barrierNode predicate | other QL defined barrier guards, for example using concepts + * v v + * various Barrier classes for specific data flow configurations + * ``` + * + * New barriers and barrier guards should be defined using models-as-data, QL extensions of + * `FlowBarrier::Range`/`FlowBarrierGuard::Range`, or concepts. Data flow configurations should use the + * `barrierNode` predicate and/or concepts to define their barriers. + */ + +private import rust +private import internal.FlowSummaryImpl as Impl +private import internal.DataFlowImpl as DataFlowImpl + +// import all instances below +private module Barriers { + private import codeql.rust.Frameworks + private import codeql.rust.dataflow.internal.ModelsAsData +} + +/** Provides the `Range` class used to define the extent of `FlowBarrier`. */ +module FlowBarrier { + /** A flow barrier. */ + abstract class Range extends Impl::Public::BarrierElement { + bindingset[this] + Range() { any() } + + override predicate isBarrier( + string output, string kind, Impl::Public::Provenance provenance, string model + ) { + this.isBarrier(output, kind) and provenance = "manual" and model = "" + } + + /** + * Holds if this element is a flow barrier of kind `kind`, where data + * flows out as described by `output`. + */ + predicate isBarrier(string output, string kind) { none() } + } +} + +final class FlowBarrier = FlowBarrier::Range; + +/** Provides the `Range` class used to define the extent of `FlowBarrierGuard`. */ +module FlowBarrierGuard { + /** A flow barrier guard. */ + abstract class Range extends Impl::Public::BarrierGuardElement { + bindingset[this] + Range() { any() } + + override predicate isBarrierGuard( + string input, string branch, string kind, Impl::Public::Provenance provenance, string model + ) { + this.isBarrierGuard(input, branch, kind) and provenance = "manual" and model = "" + } + + /** + * Holds if this element is a flow barrier guard of kind `kind`, for data + * flowing in as described by `input`, when `this` evaluates to `branch`. + */ + predicate isBarrierGuard(string input, string branch, string kind) { none() } + } +} + +final class FlowBarrierGuard = FlowBarrierGuard::Range; + +predicate barrierNode = DataFlowImpl::barrierNode/2; diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 23424dbffd92..4ad3af0f42a0 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -193,9 +193,7 @@ module LocalFlow { } pragma[nomagic] - predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) { - nodeFrom.asExpr() = getALastEvalNode(nodeTo.asExpr()) - or + predicate localMustFlowStep(Node nodeFrom, Node nodeTo) { // An edge from the right-hand side of a let statement to the left-hand side. exists(LetStmt s | nodeFrom.asExpr() = s.getInitializer() and @@ -238,6 +236,15 @@ module LocalFlow { nodeTo.asPat() = match.getAnArm().getPat() ) or + nodeFrom.asExpr() = nodeTo.asExpr().(ParenExpr).getExpr() + } + + pragma[nomagic] + predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) { + localMustFlowStep(nodeFrom, nodeTo) + or + nodeFrom.asExpr() = getALastEvalNode(nodeTo.asExpr()) + or nodeFrom.asPat().(OrPat).getAPat() = nodeTo.asPat() or nodeTo.(PostUpdateNode).getPreUpdateNode().asExpr() = @@ -263,10 +270,84 @@ predicate lambdaCallExpr(CallExprImpl::DynamicCallExpr call, LambdaCallKind kind exists(kind) } +// NOTE: We do not yet track type information, except for closures where +// we use the closure itself to represent the unique type. +final class DataFlowType extends TDataFlowType { + Expr asClosureExpr() { this = TClosureExprType(result) } + + predicate isUnknownType() { this = TUnknownType() } + + predicate isSourceContextParameterType() { this = TSourceContextParameterType() } + + string toString() { + exists(this.asClosureExpr()) and + result = "... => .." + or + this.isUnknownType() and + result = "" + or + this.isSourceContextParameterType() and + result = "" + } +} + +pragma[nomagic] +private predicate compatibleTypesSourceContextParameterTypeLeft(DataFlowType t1, DataFlowType t2) { + t1.isSourceContextParameterType() and not exists(t2.asClosureExpr()) +} + +pragma[nomagic] +private predicate compatibleTypesLeft(DataFlowType t1, DataFlowType t2) { + t1.isUnknownType() and exists(t2) + or + t1.asClosureExpr() = t2.asClosureExpr() + or + compatibleTypesSourceContextParameterTypeLeft(t1, t2) +} + +predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { + compatibleTypesLeft(t1, t2) + or + compatibleTypesLeft(t2, t1) +} + +pragma[nomagic] +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { + not t1.isUnknownType() and t2.isUnknownType() + or + compatibleTypesSourceContextParameterTypeLeft(t1, t2) +} + +DataFlowType getNodeType(NodePublic node) { + result.asClosureExpr() = node.asExpr() + or + result.asClosureExpr() = node.(ClosureParameterNode).getCfgScope() + or + exists(VariableCapture::Flow::SynthesizedCaptureNode scn | + scn = node.(CaptureNode).getSynthesizedCaptureNode() and + if scn.isInstanceAccess() + then result.asClosureExpr() = scn.getEnclosingCallable() + else result.isUnknownType() + ) + or + not lambdaCreationExpr(node.asExpr()) and + not node instanceof ClosureParameterNode and + not node instanceof CaptureNode and + result.isUnknownType() +} + // Defines a set of aliases needed for the `RustDataFlow` module private module Aliases { class DataFlowCallableAlias = DataFlowCallable; + class DataFlowTypeAlias = DataFlowType; + + predicate compatibleTypesAlias = compatibleTypes/2; + + predicate typeStrongerThanAlias = typeStrongerThan/2; + + predicate getNodeTypeAlias = getNodeType/1; + class ReturnKindAlias = ReturnKind; class DataFlowCallAlias = DataFlowCall; @@ -398,8 +479,6 @@ module RustDataFlowGen implements InputSig result = node.(Node::Node).getEnclosingCallable() } - DataFlowType getNodeType(Node node) { any() } - predicate nodeIsHidden(Node node) { node instanceof SsaNode or node.(FlowSummaryNode).getSummaryNode().isHidden() or @@ -486,15 +565,17 @@ module RustDataFlowGen implements InputSig */ OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { call = result.getCall(kind) } - // NOTE: For now we use the type `Unit` and do not benefit from type - // information in the data flow analysis. - final class DataFlowType extends Unit { - string toString() { result = "" } - } + class DataFlowType = DataFlowTypeAlias; + + predicate compatibleTypes = compatibleTypesAlias/2; + + predicate typeStrongerThan = typeStrongerThanAlias/2; - predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { any() } + DataFlowType getSourceContextParameterNodeType(Node p) { + exists(p) and result.isSourceContextParameterType() + } - predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + predicate getNodeType = getNodeTypeAlias/1; class Content = ContentAlias; @@ -897,6 +978,8 @@ module RustDataFlowGen implements InputSig predicate localMustFlowStep(Node node1, Node node2) { SsaFlow::localMustFlowStep(node1, node2) or + LocalFlow::localMustFlowStep(node1, node2) + or FlowSummaryImpl::Private::Steps::summaryLocalMustFlowStep(node1 .(FlowSummaryNode) .getSummaryNode(), node2.(FlowSummaryNode).getSummaryNode()) @@ -1110,6 +1193,12 @@ private module Cached { TCfgScope(CfgScope scope) or TSummarizedCallable(SummarizedCallable c) + cached + newtype TDataFlowType = + TClosureExprType(Expr e) { lambdaCreationExpr(e) } or + TUnknownType() or + TSourceContextParameterType() + /** This is the local flow predicate that is exposed. */ cached predicate localFlowStepImpl(Node nodeFrom, Node nodeTo) { @@ -1157,6 +1246,64 @@ private module Cached { cached predicate sinkNode(Node n, string kind) { n.(FlowSummaryNode).isSink(kind, _) } + private newtype TKindModelPair = + TMkPair(string kind, string model) { + FlowSummaryImpl::Private::barrierGuardSpec(_, _, _, kind, model) + } + + private boolean convertAcceptingValue(FlowSummaryImpl::Public::AcceptingValue av) { + av.isTrue() and result = true + or + av.isFalse() and result = false + // Remaining cases are not supported yet, they depend on the shared Guards library. + // or + // av.isNoException() and result.getDualValue().isThrowsException() + // or + // av.isZero() and result.asIntValue() = 0 + // or + // av.isNotZero() and result.getDualValue().asIntValue() = 0 + // or + // av.isNull() and result.isNullValue() + // or + // av.isNotNull() and result.isNonNullValue() + } + + private predicate barrierGuardChecks(AstNode g, Expr e, boolean gv, TKindModelPair kmp) { + exists( + FlowSummaryImpl::Public::BarrierGuardElement b, + FlowSummaryImpl::Private::SummaryComponentStack stack, + FlowSummaryImpl::Public::AcceptingValue acceptingValue, string kind, string model + | + FlowSummaryImpl::Private::barrierGuardSpec(b, stack, acceptingValue, kind, model) and + e = FlowSummaryImpl::StepsInput::getSinkNode(b, stack.headOfSingleton()).asExpr() and + kmp = TMkPair(kind, model) and + gv = convertAcceptingValue(acceptingValue) and + g = b.getCall() + ) + } + + /** Holds if `n` is a flow barrier of kind `kind` and model `model`. */ + cached + predicate barrierNode(Node n, string kind, string model) { + exists( + FlowSummaryImpl::Public::BarrierElement b, + FlowSummaryImpl::Private::SummaryComponentStack stack + | + FlowSummaryImpl::Private::barrierSpec(b, stack, kind, model) + | + n = FlowSummaryImpl::StepsInput::getSourceNode(b, stack, false) + or + // For barriers like `Argument[0]` we want to target the pre-update node + n = + FlowSummaryImpl::StepsInput::getSourceNode(b, stack, true) + .(PostUpdateNode) + .getPreUpdateNode() + ) + or + ParameterizedBarrierGuard::getABarrierNode(TMkPair(kind, + model)) = n + } + /** * A step in a flow summary defined using `OptionalStep[name]`. An `OptionalStep` is "opt-in", which means * that by default the step is not present in the flow summary and needs to be explicitly enabled by defining @@ -1180,3 +1327,34 @@ private module Cached { } import Cached + +/** Holds if `n` is a flow barrier of kind `kind`. */ +predicate barrierNode(Node n, string kind) { barrierNode(n, kind, _) } + +bindingset[this] +private signature class ParamSig; + +private module WithParam { + /** + * Holds if the guard `g` validates the expression `e` upon evaluating to `gv`. + * + * The expression `e` is expected to be a syntactic part of the guard `g`. + * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` + * the argument `x`. + */ + signature predicate guardChecksSig(AstNode g, Expr e, boolean branch, P param); +} + +/** + * Provides a set of barrier nodes for a guard that validates an expression. + * + * This is expected to be used in `isBarrier`/`isSanitizer` definitions + * in data flow and taint tracking. + */ +module ParameterizedBarrierGuard::guardChecksSig/4 guardChecks> { + /** Gets a node that is safely guarded by the given guard check. */ + Node getABarrierNode(P param) { + SsaFlow::asNode(result) = + SsaImpl::DataFlowIntegration::ParameterizedBarrierGuard::getABarrierNode(param) + } +} diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index ab0b3aff9ca9..850328146518 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -143,7 +143,7 @@ module Input implements InputSig { private import Make as Impl -private module StepsInput implements Impl::Private::StepsInputSig { +module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } /** Gets the argument of `source` described by `sc`, if any. */ @@ -171,18 +171,27 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.asCfgScope() = source.getEnclosingCfgScope() } - RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { + additional RustDataFlow::Node getSourceNode( + Input::SourceBase source, Impl::Private::SummaryComponentStack s, boolean isArgPostUpdate + ) { s.head() = Impl::Private::SummaryComponent::return(_) and - result.asExpr() = source.getCall() + result.asExpr() = source.getCall() and + isArgPostUpdate = false or exists(RustDataFlow::ArgumentPosition pos, Expr arg | s.head() = Impl::Private::SummaryComponent::parameter(pos) and arg = getSourceNodeArgument(source, s.tail().headOfSingleton()) and - result.asParameter() = getCallable(arg).getParam(pos.getPosition()) + result.asParameter() = getCallable(arg).getParam(pos.getPosition()) and + isArgPostUpdate = false ) or result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr() = - getSourceNodeArgument(source, s.headOfSingleton()) + getSourceNodeArgument(source, s.headOfSingleton()) and + isArgPostUpdate = true + } + + RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { + result = getSourceNode(source, s, _) } RustDataFlow::Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index 8b55de8d54dc..8652b93f4aa9 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -9,6 +9,13 @@ * `path; input; kind; provenance` * - Summaries: * `path; input; output; kind; provenance` + * - Barriers: + * `path; output; kind; provenance` + * - BarrierGuards: + * `path; input; acceptingValue; kind; provenance` + * - Neutrals: + * `path; kind; provenance` + * A neutral is used to indicate that a callable is neutral with respect to flow (no summary), source (is not a source) or sink (is not a sink). * * The interpretation of a row is similar to API-graphs with a left-to-right * reading. @@ -34,16 +41,20 @@ * - `Field[i]`: the `i`th element of a tuple. * - `Reference`: the referenced value. * - `Future`: the value being computed asynchronously. - * 3. The `kind` column is a tag that can be referenced from QL to determine to + * 3. The `acceptingValue` column of barrier guard models specifies which branch of the + * guard is blocking flow. It can be "true" or "false". In the future + * "no-exception", "not-zero", "null", "not-null" may be supported. + * 4. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources `"remote"` indicates a default remote flow source, and for summaries * `"taint"` indicates a default additional taint step and `"value"` indicates a * globally applicable value-preserving step. - * 4. The `provenance` column is mainly used internally, and should be set to `"manual"` for + * 5. The `provenance` column is mainly used internally, and should be set to `"manual"` for * all custom models. */ private import rust +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink @@ -98,6 +109,30 @@ extensible predicate neutralModel( string path, string kind, string provenance, QlBuiltins::ExtensionId madId ); +/** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `output` is a barrier of the given `kind` and `madId` is the data + * extension row number. + */ +extensible predicate barrierModel( + string path, string output, string kind, string provenance, QlBuiltins::ExtensionId madId +); + +/** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `input` is a barrier guard of the given `kind` and `madId` is the data + * extension row number. + * + * The value referred to by `input` is assumed to lead to an argument of a call + * (possibly `self`), and the call is guarding the argument. + * `acceptingValue` is either `true` or `false`, indicating which branch of + * the guard is protecting the parameter. + */ +extensible predicate barrierGuardModel( + string path, string input, string acceptingValue, string kind, string provenance, + QlBuiltins::ExtensionId madId +); + /** * Holds if the given extension tuple `madId` should pretty-print as `model`. * @@ -123,6 +158,16 @@ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { neutralModel(path, kind, _, madId) and model = "Neutral: " + path + "; " + kind ) + or + exists(string path, string output, string kind | + barrierModel(path, output, kind, _, madId) and + model = "Barrier: " + path + "; " + output + "; " + kind + ) + or + exists(string path, string input, string acceptingValue, string kind | + barrierGuardModel(path, input, acceptingValue, kind, _, madId) and + model = "Barrier guard: " + path + "; " + input + "; " + acceptingValue + "; " + kind + ) } private class SummarizedCallableFromModel extends SummarizedCallable::Range { @@ -206,13 +251,47 @@ private class FlowSinkFromModel extends FlowSink::Range { } } +private class FlowBarrierFromModel extends FlowBarrier::Range { + private string path; + + FlowBarrierFromModel() { + barrierModel(path, _, _, _, _) and + this.callResolvesTo(path) + } + + override predicate isBarrier(string output, string kind, Provenance provenance, string model) { + exists(QlBuiltins::ExtensionId madId | + barrierModel(path, output, kind, provenance, madId) and + model = "MaD:" + madId.toString() + ) + } +} + +private class FlowBarrierGuardFromModel extends FlowBarrierGuard::Range { + private string path; + + FlowBarrierGuardFromModel() { + barrierGuardModel(path, _, _, _, _, _) and + this.callResolvesTo(path) + } + + override predicate isBarrierGuard( + string input, string acceptingValue, string kind, Provenance provenance, string model + ) { + exists(QlBuiltins::ExtensionId madId | + barrierGuardModel(path, input, acceptingValue, kind, provenance, madId) and + model = "MaD:" + madId.toString() + ) + } +} + private module Debug { private import FlowSummaryImpl private import Private private import Content private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.rust.internal.typeinference.TypeMention - private import codeql.rust.internal.typeinference.Type + private import codeql.rust.internal.typeinference.Type as Type private predicate relevantManualModel(SummarizedCallableImpl sc, string can) { exists(Provenance manual | @@ -230,7 +309,7 @@ private module Debug { sc.propagatesFlow(input, _, _, _, _, _) and input.head() = SummaryComponent::argument(pos) and p = pos.getParameterIn(sc.getParamList()) and - tm.getType() instanceof RefType and + tm.getType() instanceof Type::RefType and not input.tail().head() = SummaryComponent::content(TSingletonContentSet(TReferenceContent())) | tm = p.getTypeRepr() @@ -245,7 +324,7 @@ private module Debug { exists(TypeMention tm | relevantManualModel(sc, can) and sc.propagatesFlow(_, output, _, _, _, _) and - tm.getType() instanceof RefType and + tm.getType() instanceof Type::RefType and output.head() = SummaryComponent::return(_) and not output.tail().head() = SummaryComponent::content(TSingletonContentSet(TReferenceContent())) and diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index 1fa3983f8112..1ccb7db73f52 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -82,12 +82,12 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { result = this.getSummaryNode().getSinkElement() } - /** Holds is this node is a source node of kind `kind`. */ + /** Holds if this node is a source node of kind `kind`. */ predicate isSource(string kind, string model) { this.getSummaryNode().(FlowSummaryImpl::Private::SourceOutputNode).isEntry(kind, model) } - /** Holds is this node is a sink node of kind `kind`. */ + /** Holds if this node is a sink node of kind `kind`. */ predicate isSink(string kind, string model) { this.getSummaryNode().(FlowSummaryImpl::Private::SinkInputNode).isExit(kind, model) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index 03db7c35b4d4..874126f6a08c 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -305,6 +305,31 @@ private module Cached { predicate getABarrierNode = getABarrierNodeImpl/0; } + + bindingset[this] + private signature class ParamSig; + + private module WithParam { + signature predicate guardChecksSig(AstNode g, Expr e, boolean branch, P param); + } + + overlay[global] + cached // nothing is actually cached + module ParameterizedBarrierGuard::guardChecksSig/4 guardChecks> { + private predicate guardChecksAdjTypes( + DataFlowIntegrationInput::Guard g, DataFlowIntegrationInput::Expr e, + DataFlowIntegrationInput::GuardValue branch, P param + ) { + guardChecks(g, e, branch, param) + } + + private Node getABarrierNodeImpl(P param) { + result = + DataFlowIntegrationImpl::BarrierGuardWithState::getABarrierNode(param) + } + + predicate getABarrierNode = getABarrierNodeImpl/1; + } } } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml index 1a33951dfc38..61c0327171a7 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml +++ b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml @@ -15,3 +15,13 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: [] + + - addsTo: + pack: codeql/rust-all + extensible: barrierModel + data: [] + + - addsTo: + pack: codeql/rust-all + extensible: barrierGuardModel + data: [] diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll index 298e07f4b3e9..3ff04276c638 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll @@ -33,5 +33,11 @@ module Impl { result = "impl " + trait + this.getSelfTy().toAbbreviatedString() + " { ... }" ) } + + /** + * Holds if this is an inherent `impl` block, that is, one that does not implement a trait. + */ + pragma[nomagic] + predicate isInherent() { not this.hasTrait() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/InvocationExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/InvocationExprImpl.qll index e5dd4cdaee67..9fad85e756f4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/InvocationExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/InvocationExprImpl.qll @@ -6,7 +6,15 @@ module Impl { private newtype TArgumentPosition = TPositionalArgumentPosition(int i) { - i in [0 .. max([any(ParamList l).getNumberOfParams(), any(ArgList l).getNumberOfArgs()]) - 1] + // For the type `FunctionPosition` used by type inference, we work with function-call syntax + // adjusted positions, so a call like `x.m(a, b, c)` needs positions `0` through `3`; for this + // reason, there is no `- 1` after `max(...)` below. + i in [0 .. max([ + any(ParamList l).getNumberOfParams(), + any(ArgList l).getNumberOfArgs(), + any(StructFieldList l).getNumberOfFields() // Positions are used for struct expressions in type inference + ] + )] } or TSelfArgumentPosition() or TTypeQualifierArgumentPosition() diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructExprImpl.qll index d7704894c49a..897196b78cbe 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructExprImpl.qll @@ -50,5 +50,10 @@ module Impl { or result = this.getVariant().getStructField(name) } + + /** Gets the `i`th struct field of the instantiated struct or variant. */ + StructField getNthStructField(int i) { + result = [this.getStruct().getNthStructField(i), this.getVariant().getNthStructField(i)] + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll index cb4121b7224d..23fa1e76d9a8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll @@ -35,6 +35,12 @@ module Impl { /** Gets a record field, if any. */ StructField getAStructField() { result = this.getStructField(_) } + /** Gets the `i`th struct field, if any. */ + pragma[nomagic] + StructField getNthStructField(int i) { + result = this.getFieldList().(StructFieldList).getField(i) + } + /** Gets the `i`th tuple field, if any. */ pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructPatImpl.qll index 28afc2a5b0d7..e649d2a57787 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructPatImpl.qll @@ -42,6 +42,13 @@ module Impl { ) } + /** Gets the `i`th struct field of the instantiated struct or variant. */ + StructField getNthStructField(int i) { + exists(PathResolution::ItemNode item | item = this.getResolvedPath(_) | + result = [item.(Struct).getNthStructField(i), item.(Variant).getNthStructField(i)] + ) + } + /** Gets the struct pattern for the field `name`. */ pragma[nomagic] StructPatField getPatField(string name) { diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll index 755c5399a204..bba95442f6a4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll @@ -32,7 +32,8 @@ module Impl { * Gets the `index`th type bound of this type parameter, if any. * * This includes type bounds directly on this type parameter and bounds from - * any `where` clauses for this type parameter. + * any `where` clauses for this type parameter, but restricted to `where` + * clauses from the item that declares this type parameter. */ TypeBound getTypeBound(int index) { result = @@ -43,13 +44,36 @@ module Impl { * Gets a type bound of this type parameter. * * This includes type bounds directly on this type parameter and bounds from - * any `where` clauses for this type parameter. + * any `where` clauses for this type parameter, but restricted to `where` + * clauses from the item that declares this type parameter. */ TypeBound getATypeBound() { result = this.getTypeBound(_) } /** Holds if this type parameter has at least one type bound. */ predicate hasTypeBound() { exists(this.getATypeBound()) } + /** + * Gets the `index`th additional type bound of this type parameter, + * which applies to `constrainingItem`, if any. + * + * For example, in + * + * ```rust + * impl SomeType where T: Clone { + * fn foo() where T: Debug { } + * } + * ``` + * + * The constraint `Debug` additionally applies to `T` in `foo`. + */ + TypeBound getAdditionalTypeBound(Item constrainingItem, int index) { + result = + rank[index + 1](int i, int j | + | + this.(TypeParamItemNode).getAdditionalTypeBoundAt(constrainingItem, i, j) order by i, j + ) + } + override string toAbbreviatedString() { result = this.getName().getText() } override string toStringImpl() { result = this.getName().getText() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll index ed8b93f6c1d2..58b061049bdd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll @@ -32,6 +32,12 @@ module Impl { result.getName().getText() = name } + /** Gets the `i`th struct field, if any. */ + pragma[nomagic] + StructField getNthStructField(int i) { + result = this.getFieldList().(StructFieldList).getField(i) + } + /** Gets the `i`th tuple field, if any. */ pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 6b09ababd741..1a545da0db5c 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -19,6 +19,13 @@ private class BuiltinsTypesFile extends File { } } +private class BuiltinsImplsFile extends File { + BuiltinsImplsFile() { + this.getBaseName() = "impls.rs" and + this.getParentContainer() instanceof BuiltinsFolder + } +} + /** * A builtin type, such as `bool` and `i32`. * @@ -221,3 +228,8 @@ class TupleType extends BuiltinType { ) } } + +/** A builtin implementation. */ +class BuiltinImpl extends Impl { + BuiltinImpl() { this.getFile() instanceof BuiltinsImplsFile } +} diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 76c15485bb9a..10d18786880b 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -1162,21 +1162,28 @@ private Path getWherePredPath(WherePred wp) { result = wp.getTypeRepr().(PathTyp final class TypeParamItemNode extends NamedItemNode, TypeItemNode instanceof TypeParam { /** Gets a where predicate for this type parameter, if any */ pragma[nomagic] - private WherePred getAWherePred() { + private WherePred getAWherePred(ItemNode constrainingItem, boolean isAdditional) { exists(ItemNode declaringItem | + this = declaringItem.getTypeParam(_) and this = resolvePath(getWherePredPath(result)) and - result = declaringItem.getADescendant() and - this = declaringItem.getADescendant() + result = constrainingItem.getADescendant() + | + constrainingItem = declaringItem and + isAdditional = false + or + constrainingItem = declaringItem.getADescendant() and + isAdditional = true ) } pragma[nomagic] TypeBound getTypeBoundAt(int i, int j) { exists(TypeBoundList tbl | result = tbl.getBound(j) | - tbl = super.getTypeBoundList() and i = 0 + tbl = super.getTypeBoundList() and + i = 0 or exists(WherePred wp | - wp = this.getAWherePred() and + wp = this.getAWherePred(_, false) and tbl = wp.getTypeBoundList() and wp = any(WhereClause wc).getPredicate(i) ) @@ -1184,18 +1191,41 @@ final class TypeParamItemNode extends NamedItemNode, TypeItemNode instanceof Typ } pragma[nomagic] - Path getABoundPath() { result = this.getTypeBoundAt(_, _).getTypeRepr().(PathTypeRepr).getPath() } + TypeBound getAdditionalTypeBoundAt(Item constrainingItem, int i, int j) { + exists(TypeBoundList tbl | result = tbl.getBound(j) | + exists(WherePred wp | + wp = this.getAWherePred(constrainingItem, true) and + tbl = wp.getTypeBoundList() and + wp = any(WhereClause wc).getPredicate(i) + ) + ) + } pragma[nomagic] - ItemNode resolveBound(int index) { + Path getBoundPath(int index) { result = rank[index + 1](int i, int j | | - resolvePath(this.getTypeBoundAt(i, j).getTypeRepr().(PathTypeRepr).getPath()) order by i, j + this.getTypeBoundAt(i, j).getTypeRepr().(PathTypeRepr).getPath() order by i, j ) } - ItemNode resolveABound() { result = resolvePath(this.getABoundPath()) } + pragma[nomagic] + Path getABoundPath() { result = this.getBoundPath(_) } + + pragma[nomagic] + ItemNode resolveBound(int index) { result = resolvePath(this.getBoundPath(index)) } + + ItemNode resolveABound() { result = this.resolveBound(_) } + + pragma[nomagic] + ItemNode resolveAdditionalBound(ItemNode constrainingItem) { + result = + resolvePath(this.getAdditionalTypeBoundAt(constrainingItem, _, _) + .getTypeRepr() + .(PathTypeRepr) + .getPath()) + } override string getName() { result = TypeParam.super.getName().getText() } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 51781a473057..86bcdbe4fe8f 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -15,10 +15,11 @@ private import TypeInference * Holds if `traitBound` is the first non-trivial trait bound of `tp`. */ pragma[nomagic] -private predicate hasFirstNonTrivialTraitBound(TypeParamItemNode tp, Trait traitBound) { +private predicate hasFirstNonTrivialTraitBound(TypeParamItemNode tp, Path traitBound) { traitBound = - min(Trait trait, int i | - trait = tp.resolveBound(i) and + min(Trait trait, Path path, int i | + path = tp.getBoundPath(i) and + trait = resolvePath(path) and // Exclude traits that are known to not narrow things down very much. not trait.getName().getText() = [ @@ -27,7 +28,7 @@ private predicate hasFirstNonTrivialTraitBound(TypeParamItemNode tp, Trait trait "Send", "Sync", "Unpin", "UnwindSafe", "RefUnwindSafe" ] | - trait order by i + path order by i ) } @@ -41,16 +42,19 @@ private predicate hasFirstNonTrivialTraitBound(TypeParamItemNode tp, Trait trait */ pragma[nomagic] predicate isBlanketLike(ImplItemNode i, TypePath blanketSelfPath, TypeParam blanketTypeParam) { - blanketTypeParam = i.getBlanketImplementationTypeParam() and - blanketSelfPath.isEmpty() - or - exists(TypeMention tm, Type root, TypeParameter tp | - tm = i.(Impl).getSelfTy() and - complexSelfRoot(root, tp) and - tm.getType() = root and - tm.getTypeAt(blanketSelfPath) = TTypeParamTypeParameter(blanketTypeParam) and - blanketSelfPath = TypePath::singleton(tp) and - hasFirstNonTrivialTraitBound(blanketTypeParam, _) + i.(Impl).hasTrait() and + ( + blanketTypeParam = i.getBlanketImplementationTypeParam() and + blanketSelfPath.isEmpty() + or + exists(TypeMention tm, Type root, TypeParameter tp | + tm = i.(Impl).getSelfTy() and + complexSelfRoot(root, tp) and + tm.getType() = root and + tm.getTypeAt(blanketSelfPath) = TTypeParamTypeParameter(blanketTypeParam) and + blanketSelfPath = TypePath::singleton(tp) and + hasFirstNonTrivialTraitBound(blanketTypeParam, _) + ) ) } @@ -100,11 +104,11 @@ module SatisfiesBlanketConstraint< } private module SatisfiesBlanketConstraintInput implements - SatisfiesConstraintInputSig + SatisfiesConstraintInputSig { pragma[nomagic] additional predicate relevantConstraint( - ArgumentTypeAndBlanketOffset ato, ImplItemNode impl, Trait traitBound + ArgumentTypeAndBlanketOffset ato, ImplItemNode impl, Path traitBound ) { exists(ArgumentType at, TypePath blanketPath, TypeParam blanketTypeParam | ato = MkArgumentTypeAndBlanketOffset(at, blanketPath) and @@ -114,13 +118,13 @@ module SatisfiesBlanketConstraint< } pragma[nomagic] - predicate relevantConstraint(ArgumentTypeAndBlanketOffset ato, Type constraint) { - relevantConstraint(ato, _, constraint.(TraitType).getTrait()) + predicate relevantConstraint(ArgumentTypeAndBlanketOffset ato, TypeMention constraint) { + relevantConstraint(ato, _, constraint) } } private module SatisfiesBlanketConstraint = - SatisfiesConstraint; + SatisfiesConstraint; /** * Holds if the argument type `at` satisfies the first non-trivial blanket @@ -128,10 +132,10 @@ module SatisfiesBlanketConstraint< */ pragma[nomagic] predicate satisfiesBlanketConstraint(ArgumentType at, ImplItemNode impl) { - exists(ArgumentTypeAndBlanketOffset ato, Trait traitBound | + exists(ArgumentTypeAndBlanketOffset ato, Path traitBound | ato = MkArgumentTypeAndBlanketOffset(at, _) and SatisfiesBlanketConstraintInput::relevantConstraint(ato, impl, traitBound) and - SatisfiesBlanketConstraint::satisfiesConstraintType(ato, TTrait(traitBound), _, _) + SatisfiesBlanketConstraint::satisfiesConstraint(ato, traitBound, _, _) ) or exists(TypeParam blanketTypeParam | @@ -146,10 +150,10 @@ module SatisfiesBlanketConstraint< */ pragma[nomagic] predicate dissatisfiesBlanketConstraint(ArgumentType at, ImplItemNode impl) { - exists(ArgumentTypeAndBlanketOffset ato, Trait traitBound | + exists(ArgumentTypeAndBlanketOffset ato, Path traitBound | ato = MkArgumentTypeAndBlanketOffset(at, _) and SatisfiesBlanketConstraintInput::relevantConstraint(ato, impl, traitBound) and - SatisfiesBlanketConstraint::dissatisfiesConstraint(ato, TTrait(traitBound)) + SatisfiesBlanketConstraint::dissatisfiesConstraint(ato, traitBound) ) } } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll index 0f65d21dcf71..ec0152c7ecae 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -6,6 +6,8 @@ */ private import rust +private import codeql.rust.frameworks.stdlib.Builtins as Builtins +private import codeql.rust.frameworks.stdlib.Stdlib private import codeql.rust.internal.PathResolution private import Type private import TypeAbstraction @@ -13,68 +15,113 @@ private import TypeMention private import TypeInference private import FunctionType -pragma[nomagic] -private Type resolveNonTypeParameterTypeAt(TypeMention tm, TypePath path) { - result = tm.getTypeAt(path) and - not result instanceof TypeParameter -} +private signature Type resolveTypeMentionAtSig(AstNode tm, TypePath path); -bindingset[t1, t2] -private predicate typeMentionEqual(TypeMention t1, TypeMention t2) { - forex(TypePath path, Type type | resolveNonTypeParameterTypeAt(t1, path) = type | - resolveNonTypeParameterTypeAt(t2, path) = type - ) -} +/** + * Provides logic for identifying sibling implementations, parameterized over + * how to resolve type mentions (`PreTypeMention` vs. `TypeMention`). + */ +private module MkSiblingImpls { + pragma[nomagic] + private Type resolveNonTypeParameterTypeAt(AstNode tm, TypePath path) { + result = resolveTypeMentionAt(tm, path) and + not result instanceof TypeParameter + } -pragma[nomagic] -private predicate implSiblingCandidate( - Impl impl, TraitItemNode trait, Type rootType, TypeMention selfTy -) { - trait = impl.(ImplItemNode).resolveTraitTy() and - selfTy = impl.getSelfTy() and - rootType = selfTy.getType() -} + bindingset[t1, t2] + private predicate typeMentionEqual(AstNode t1, AstNode t2) { + forex(TypePath path, Type type | resolveNonTypeParameterTypeAt(t1, path) = type | + resolveNonTypeParameterTypeAt(t2, path) = type + ) + } -pragma[nomagic] -private predicate blanketImplSiblingCandidate(ImplItemNode impl, Trait trait) { - impl.isBlanketImplementation() and - trait = impl.resolveTraitTy() -} + pragma[nomagic] + private predicate implSiblingCandidate( + Impl impl, TraitItemNode trait, Type rootType, AstNode selfTy + ) { + trait = impl.(ImplItemNode).resolveTraitTy() and + selfTy = impl.getSelfTy() and + rootType = resolveTypeMentionAt(selfTy, TypePath::nil()) + } -/** - * Holds if `impl1` and `impl2` are a sibling implementations of `trait`. We - * consider implementations to be siblings if they implement the same trait for - * the same type. In that case `Self` is the same type in both implementations, - * and method calls to the implementations cannot be resolved unambiguously - * based only on the receiver type. - */ -pragma[inline] -private predicate implSiblings(TraitItemNode trait, Impl impl1, Impl impl2) { - impl1 != impl2 and - ( - exists(Type rootType, TypeMention selfTy1, TypeMention selfTy2 | - implSiblingCandidate(impl1, trait, rootType, selfTy1) and - implSiblingCandidate(impl2, trait, rootType, selfTy2) and - // In principle the second conjunct below should be superflous, but we still - // have ill-formed type mentions for types that we don't understand. For - // those checking both directions restricts further. Note also that we check - // syntactic equality, whereas equality up to renaming would be more - // correct. - typeMentionEqual(selfTy1, selfTy2) and - typeMentionEqual(selfTy2, selfTy1) + pragma[nomagic] + private predicate blanketImplSiblingCandidate(ImplItemNode impl, Trait trait) { + impl.isBlanketImplementation() and + trait = impl.resolveTraitTy() + } + + /** + * Holds if `impl1` and `impl2` are sibling implementations of `trait`. We + * consider implementations to be siblings if they implement the same trait for + * the same type. In that case `Self` is the same type in both implementations, + * and method calls to the implementations cannot be resolved unambiguously + * based only on the receiver type. + */ + pragma[inline] + predicate implSiblings(TraitItemNode trait, Impl impl1, Impl impl2) { + impl1 != impl2 and + ( + exists(Type rootType, AstNode selfTy1, AstNode selfTy2 | + implSiblingCandidate(impl1, trait, rootType, selfTy1) and + implSiblingCandidate(impl2, trait, rootType, selfTy2) and + // In principle the second conjunct below should be superfluous, but we still + // have ill-formed type mentions for types that we don't understand. For + // those checking both directions restricts further. Note also that we check + // syntactic equality, whereas equality up to renaming would be more + // correct. + typeMentionEqual(selfTy1, selfTy2) and + typeMentionEqual(selfTy2, selfTy1) + ) + or + blanketImplSiblingCandidate(impl1, trait) and + blanketImplSiblingCandidate(impl2, trait) + ) + } + + /** + * Holds if `impl` is an implementation of `trait` and if another implementation + * exists for the same type. + */ + pragma[nomagic] + predicate implHasSibling(ImplItemNode impl, Trait trait) { implSiblings(trait, impl, _) } + + pragma[nomagic] + predicate implHasAmbiguousSiblingAt(ImplItemNode impl, Trait trait, TypePath path) { + exists(ImplItemNode impl2, Type t1, Type t2 | + implSiblings(trait, impl, impl2) and + t1 = resolveTypeMentionAt(impl.getTraitPath(), path) and + t2 = resolveTypeMentionAt(impl2.getTraitPath(), path) and + t1 != t2 + | + not t1 instanceof TypeParameter or + not t2 instanceof TypeParameter ) or - blanketImplSiblingCandidate(impl1, trait) and - blanketImplSiblingCandidate(impl2, trait) - ) + // todo: handle blanket/non-blanket siblings in `implSiblings` + trait = + any(IndexTrait it | + implSiblingCandidate(impl, it, _, _) and + impl instanceof Builtins::BuiltinImpl and + path = TypePath::singleton(TAssociatedTypeTypeParameter(trait, it.getOutputType())) + ) + } } -/** - * Holds if `impl` is an implementation of `trait` and if another implementation - * exists for the same type. - */ -pragma[nomagic] -private predicate implHasSibling(ImplItemNode impl, Trait trait) { implSiblings(trait, impl, _) } +private Type resolvePreTypeMention(AstNode tm, TypePath path) { + result = tm.(PreTypeMention).getTypeAt(path) +} + +private module PreSiblingImpls = MkSiblingImpls; + +predicate preImplHasAmbiguousSiblingAt = PreSiblingImpls::implHasAmbiguousSiblingAt/3; + +private Type resolveTypeMention(AstNode tm, TypePath path) { + result = tm.(TypeMention).getTypeAt(path) +} + +private module SiblingImpls = MkSiblingImpls; + +import SiblingImpls /** * Holds if `f` is a function declared inside `trait`, and the type of `f` at @@ -124,7 +171,8 @@ private predicate functionResolutionDependsOnArgumentCand( implHasSibling(impl, trait) and traitTypeParameterOccurrence(trait, _, functionName, pos, path, traitTp) and f = impl.getASuccessor(functionName) and - not pos.isSelfOrTypeQualifier() + not pos.isTypeQualifier() and + not (f instanceof Method and pos.asPosition() = 0) ) } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index f8611ce2a3c0..d128875eda7e 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -6,17 +6,23 @@ private import TypeMention private import TypeInference private newtype TFunctionPosition = - TArgumentFunctionPosition(ArgumentPosition pos) or + TArgumentFunctionPosition(ArgumentPosition pos) { not pos.isSelf() } or TReturnFunctionPosition() /** - * A position of a type related to a function. + * A function-call adjusted position of a type related to a function. * - * Either `self`, `return`, or a positional parameter index. + * Either `return` or a positional parameter index, where `self` is translated + * to position `0` and subsequent positional parameters at index `i` are + * translated to position `i + 1`. + * + * Function-call adjusted positions are needed when resolving calls of the + * form `Foo::f(x_1, ..., x_n)`, where we do not know up front whether `f` is a + * method or a non-method, and hence we need to be able to match `x_1` against + * both a potential `self` parameter and a potential first positional parameter + * (and `x_2, ... x_n` against all subsequent positional parameters). */ class FunctionPosition extends TFunctionPosition { - predicate isSelf() { this.asArgumentPosition().isSelf() } - int asPosition() { result = this.asArgumentPosition().asPosition() } predicate isPosition() { exists(this.asPosition()) } @@ -25,29 +31,18 @@ class FunctionPosition extends TFunctionPosition { predicate isTypeQualifier() { this.asArgumentPosition().isTypeQualifier() } - predicate isSelfOrTypeQualifier() { this.isSelf() or this.isTypeQualifier() } - predicate isReturn() { this = TReturnFunctionPosition() } - /** Gets the corresponding position when `f` is invoked via a function call. */ - bindingset[f] - FunctionPosition getFunctionCallAdjusted(Function f) { - this.isReturn() and - result = this - or - if f.hasSelfParam() - then - this.isSelf() and result.asPosition() = 0 - or - result.asPosition() = this.asPosition() + 1 - else result = this - } - TypeMention getTypeMention(Function f) { - this.isSelf() and - result = getSelfParamTypeMention(f.getSelfParam()) - or - result = f.getParam(this.asPosition()).getTypeRepr() + ( + if f instanceof Method + then + result = f.getParam(this.asPosition() - 1).getTypeRepr() + or + result = getSelfParamTypeMention(f.getSelfParam()) and + this.asPosition() = 0 + else result = f.getParam(this.asPosition()).getTypeRepr() + ) or this.isReturn() and result = getReturnTypeMention(f) @@ -92,6 +87,7 @@ private newtype TAssocFunctionType = } bindingset[abs, constraint, tp] +pragma[inline_late] private Type getTraitConstraintTypeAt( TypeAbstraction abs, TypeMention constraint, TypeParameter tp, TypePath path ) { @@ -197,8 +193,7 @@ class AssocFunctionType extends MkAssocFunctionType { exists(Function f, ImplOrTraitItemNode i, FunctionPosition pos | this.appliesTo(f, i, pos) | result = pos.getTypeMention(f) or - pos.isSelf() and - not f.hasSelfParam() and + pos.isTypeQualifier() and result = [i.(Impl).getSelfTy().(AstNode), i.(Trait).getName()] ) } @@ -219,23 +214,47 @@ private Trait getALookupTrait(Type t) { result = t.(DynTraitType).getTrait() } -/** - * Gets the type obtained by substituting in relevant traits in which to do function - * lookup, or `t` itself when no such trait exist. - */ pragma[nomagic] -Type substituteLookupTraits(Type t) { +private Trait getAdditionalLookupTrait(ItemNode i, Type t) { + result = + t.(TypeParamTypeParameter) + .getTypeParam() + .(TypeParamItemNode) + .resolveAdditionalBound(i.getImmediateParent*()) +} + +bindingset[n, t] +pragma[inline_late] +Trait getALookupTrait(AstNode n, Type t) { + result = getALookupTrait(t) + or + result = getAdditionalLookupTrait(any(ItemNode i | n = i.getADescendant()), t) +} + +bindingset[i, t] +pragma[inline_late] +private Type substituteLookupTraits0(ItemNode i, Type t) { not exists(getALookupTrait(t)) and + not exists(getAdditionalLookupTrait(i, t)) and result = t or result = TTrait(getALookupTrait(t)) + or + result = TTrait(getAdditionalLookupTrait(i, t)) } /** - * Gets the `n`th `substituteLookupTraits` type for `t`, per some arbitrary order. + * Gets the type obtained by substituting in relevant traits in which to do function + * lookup, or `t` itself when no such trait exists, in the context of AST node `n`. */ +bindingset[n, t] +pragma[inline_late] +Type substituteLookupTraits(AstNode n, Type t) { + result = substituteLookupTraits0(any(ItemNode i | n = i.getADescendant()), t) +} + pragma[nomagic] -Type getNthLookupType(Type t, int n) { +private Type getNthLookupType(Type t, int n) { not exists(getALookupTrait(t)) and result = t and n = 0 @@ -250,24 +269,66 @@ Type getNthLookupType(Type t, int n) { } /** - * Gets the index of the last `substituteLookupTraits` type for `t`. + * Gets the `n`th `substituteLookupTraits` type for `t`, per some arbitrary order, + * in the context of AST node `node`. */ +bindingset[node, t] +pragma[inline_late] +Type getNthLookupType(AstNode node, Type t, int n) { + exists(ItemNode i | node = i.getADescendant() | + if exists(getAdditionalLookupTrait(i, t)) + then + result = + TTrait(rank[n + 1](Trait trait, int j | + trait = [getALookupTrait(t), getAdditionalLookupTrait(i, t)] and + j = idOfTypeParameterAstNode(trait) + | + trait order by j + )) + else result = getNthLookupType(t, n) + ) +} + pragma[nomagic] -int getLastLookupTypeIndex(Type t) { result = max(int n | exists(getNthLookupType(t, n))) } +private int getLastLookupTypeIndex(Type t) { result = max(int n | exists(getNthLookupType(t, n))) } + +/** + * Gets the index of the last `substituteLookupTraits` type for `t`, + * in the context of AST node `node`. + */ +bindingset[node, t] +pragma[inline_late] +int getLastLookupTypeIndex(AstNode node, Type t) { + if exists(getAdditionalLookupTrait(node, t)) + then result = max(int n | exists(getNthLookupType(node, t, n))) + else result = getLastLookupTypeIndex(t) +} + +signature class ArgSig { + /** Gets the type of this argument at `path`. */ + Type getTypeAt(TypePath path); + + /** Gets the enclosing item node of this argument. */ + ItemNode getEnclosingItemNode(); + + /** Gets a textual representation of this argument. */ + string toString(); + + /** Gets the location of this argument. */ + Location getLocation(); +} /** * A wrapper around `IsInstantiationOf` which ensures to substitute in lookup * traits when checking whether argument types are instantiations of function * types. */ -module ArgIsInstantiationOf< - HasTypeTreeSig Arg, IsInstantiationOfInputSig Input> -{ +module ArgIsInstantiationOf Input> { final private class ArgFinal = Arg; private class ArgSubst extends ArgFinal { Type getTypeAt(TypePath path) { - result = substituteLookupTraits(super.getTypeAt(path)) and + result = substituteLookupTraits0(this.getEnclosingItemNode(), super.getTypeAt(path)) and not result = TNeverType() and not result = TUnknownType() } @@ -310,10 +371,11 @@ signature module ArgsAreInstantiationsOfInputSig { * Holds if `f` inside `i` needs to have the type corresponding to type parameter * `tp` checked. * - * If `i` is an inherent implementation, `tp` is a type parameter of the type being - * implemented, otherwise `tp` is a type parameter of the trait (being implemented). + * `tp` is a type parameter of the trait being implemented by `f` or the trait to which + * `f` belongs. * - * `pos` is one of the positions in `f` in which the relevant type occours. + * `pos` is one of the function-call adjusted positions in `f` in which the relevant + * type occurs. */ predicate toCheck(ImplOrTraitItemNode i, Function f, TypeParameter tp, FunctionPosition pos); @@ -323,6 +385,8 @@ signature module ArgsAreInstantiationsOfInputSig { Location getLocation(); + ItemNode getEnclosingItemNode(); + Type getArgType(FunctionPosition pos, TypePath path); predicate hasTargetCand(ImplOrTraitItemNode i, Function f); @@ -360,7 +424,7 @@ module ArgsAreInstantiationsOf { private newtype TCallAndPos = MkCallAndPos(Input::Call call, FunctionPosition pos) { exists(call.getArgType(pos, _)) } - /** A call tagged with a position. */ + /** A call tagged with a function-call adjusted position. */ private class CallAndPos extends MkCallAndPos { Input::Call call; FunctionPosition pos; @@ -371,6 +435,8 @@ module ArgsAreInstantiationsOf { FunctionPosition getPos() { result = pos } + ItemNode getEnclosingItemNode() { result = call.getEnclosingItemNode() } + Location getLocation() { result = call.getLocation() } Type getTypeAt(TypePath path) { result = call.getArgType(pos, path) } @@ -413,20 +479,21 @@ module ArgsAreInstantiationsOf { pragma[nomagic] private predicate argIsInstantiationOf( - Input::Call call, FunctionPosition pos, ImplOrTraitItemNode i, Function f, int rnk + Input::Call call, ImplOrTraitItemNode i, Function f, int rnk ) { - ArgIsInstantiationOfToIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and - toCheckRanked(i, f, _, pos, rnk) + exists(FunctionPosition pos | + ArgIsInstantiationOfToIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and + toCheckRanked(i, f, _, pos, rnk) + ) } pragma[nomagic] private predicate argsAreInstantiationsOfToIndex( Input::Call call, ImplOrTraitItemNode i, Function f, int rnk ) { - exists(FunctionPosition pos | - argIsInstantiationOf(call, pos, i, f, rnk) and - call.hasTargetCand(i, f) - | + argIsInstantiationOf(call, i, f, rnk) and + call.hasTargetCand(i, f) and + ( rnk = 0 or argsAreInstantiationsOfToIndex(call, i, f, rnk - 1) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/Type.qll b/rust/ql/lib/codeql/rust/internal/typeinference/Type.qll index 05b6557522af..9ae79f2d58c9 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/Type.qll @@ -439,11 +439,11 @@ class TypeParamTypeParameter extends TypeParameter, TTypeParamTypeParameter { */ class AssociatedTypeTypeParameter extends TypeParameter, TAssociatedTypeTypeParameter { private Trait trait; - private TypeAlias typeAlias; + private AssocType typeAlias; AssociatedTypeTypeParameter() { this = TAssociatedTypeTypeParameter(trait, typeAlias) } - TypeAlias getTypeAlias() { result = typeAlias } + AssocType getTypeAlias() { result = typeAlias } /** Gets the trait that contains this associated type declaration. */ TraitItemNode getTrait() { result = trait } @@ -457,7 +457,13 @@ class AssociatedTypeTypeParameter extends TypeParameter, TAssociatedTypeTypePara override ItemNode getDeclaringItem() { result = trait } override string toString() { - result = typeAlias.getName().getText() + "[" + trait.getName().toString() + "]" + exists(string fromString, TraitItemNode trait2 | + result = typeAlias.getName().getText() + "[" + trait.getName() + fromString + "]" and + trait2 = typeAlias.getTrait() and + if trait = trait2 + then fromString = "" + else fromString = " (inherited from " + trait2.getName() + ")" + ) } override Location getLocation() { result = typeAlias.getLocation() } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/typeinference/TypeInference.qll index 70dfe9e90056..6c0034c2b9c7 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/TypeInference.qll @@ -30,7 +30,7 @@ private newtype TTypeArgumentPosition = } or TTypeParamTypeArgumentPosition(TypeParam tp) -private module Input implements InputSig1, InputSig2 { +private module Input1 implements InputSig1 { private import Type as T private import codeql.rust.elements.internal.generated.Raw private import codeql.rust.elements.internal.generated.Synth @@ -122,22 +122,36 @@ private module Input implements InputSig1, InputSig2 { tp0 order by kind, id1, id2 ) } +} - int getTypePathLimit() { result = 10 } +private import Input1 - PreTypeMention getABaseTypeMention(Type t) { none() } +private module M1 = Make1; - Type getATypeParameterConstraint(TypeParameter tp, TypePath path) { - exists(TypeMention tm | result = tm.getTypeAt(path) | - tm = tp.(TypeParamTypeParameter).getTypeParam().getATypeBound().getTypeRepr() or - tm = tp.(SelfTypeParameter).getTrait() or - tm = - tp.(ImplTraitTypeTypeParameter) - .getImplTraitTypeRepr() - .getTypeBoundList() - .getABound() - .getTypeRepr() - ) +import M1 + +predicate getTypePathLimit = Input1::getTypePathLimit/0; + +predicate getTypeParameterId = Input1::getTypeParameterId/1; + +class TypePath = M1::TypePath; + +module TypePath = M1::TypePath; + +/** + * Provides shared logic for implementing `InputSig2` and + * `InputSig2`. + */ +private module Input2Common { + AstNode getATypeParameterConstraint(TypeParameter tp) { + result = tp.(TypeParamTypeParameter).getTypeParam().getATypeBound().getTypeRepr() or + result = tp.(SelfTypeParameter).getTrait() or + result = + tp.(ImplTraitTypeTypeParameter) + .getImplTraitTypeRepr() + .getTypeBoundList() + .getABound() + .getTypeRepr() } /** @@ -148,7 +162,7 @@ private module Input implements InputSig1, InputSig2 { * inference module for more information. */ predicate conditionSatisfiesConstraint( - TypeAbstraction abs, PreTypeMention condition, PreTypeMention constraint, boolean transitive + TypeAbstraction abs, AstNode condition, AstNode constraint, boolean transitive ) { // `impl` blocks implementing traits transitive = false and @@ -196,23 +210,64 @@ private module Input implements InputSig1, InputSig2 { ) ) } + + predicate typeParameterIsFunctionallyDetermined(TypeParameter tp) { + tp instanceof AssociatedTypeTypeParameter + } } -private import Input +private module PreInput2 implements InputSig2 { + PreTypeMention getABaseTypeMention(Type t) { none() } -private module M1 = Make1; + PreTypeMention getATypeParameterConstraint(TypeParameter tp) { + result = Input2Common::getATypeParameterConstraint(tp) + } -import M1 + predicate conditionSatisfiesConstraint( + TypeAbstraction abs, PreTypeMention condition, PreTypeMention constraint, boolean transitive + ) { + Input2Common::conditionSatisfiesConstraint(abs, condition, constraint, transitive) + } + + predicate typeAbstractionHasAmbiguousConstraintAt( + TypeAbstraction abs, Type constraint, TypePath path + ) { + FunctionOverloading::preImplHasAmbiguousSiblingAt(abs, constraint.(TraitType).getTrait(), path) + } -predicate getTypePathLimit = Input::getTypePathLimit/0; + predicate typeParameterIsFunctionallyDetermined = + Input2Common::typeParameterIsFunctionallyDetermined/1; +} -predicate getTypeParameterId = Input::getTypeParameterId/1; +/** Provides an instantiation of the shared type inference library for `PreTypeMention`s. */ +module PreM2 = Make2; -class TypePath = M1::TypePath; +private module Input2 implements InputSig2 { + TypeMention getABaseTypeMention(Type t) { none() } -module TypePath = M1::TypePath; + TypeMention getATypeParameterConstraint(TypeParameter tp) { + result = Input2Common::getATypeParameterConstraint(tp) + } + + predicate conditionSatisfiesConstraint( + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive + ) { + Input2Common::conditionSatisfiesConstraint(abs, condition, constraint, transitive) + } + + predicate typeAbstractionHasAmbiguousConstraintAt( + TypeAbstraction abs, Type constraint, TypePath path + ) { + FunctionOverloading::implHasAmbiguousSiblingAt(abs, constraint.(TraitType).getTrait(), path) + } + + predicate typeParameterIsFunctionallyDetermined = + Input2Common::typeParameterIsFunctionallyDetermined/1; +} -private module M2 = Make2; +private import Input2 + +private module M2 = Make2; import M2 @@ -343,6 +398,10 @@ private class FunctionDeclaration extends Function { } } +private class AssocFunctionDeclaration extends FunctionDeclaration { + AssocFunctionDeclaration() { this.isAssoc(_) } +} + pragma[nomagic] private TypeMention getCallExprTypeMentionArgument(CallExpr ce, TypeArgumentPosition apos) { exists(Path p, int i | p = CallExprImpl::getFunctionPath(ce) | @@ -408,6 +467,41 @@ private predicate isPanicMacroCall(MacroExpr me) { me.getMacroCall().resolveMacro().(MacroRules).getName().getText() = "panic" } +// 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 +} + +/** + * Gets the root type of a closure. + * + * 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. + */ +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())) +} + +/** 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))) +} + /** Module for inferring certain type information. */ module CertainTypeInference { pragma[nomagic] @@ -485,11 +579,7 @@ module CertainTypeInference { // is not a certain type equality. exists(LetStmt let | not let.hasTypeRepr() and - // Due to "binding modes" the type of the pattern is not necessarily the - // same as the type of the initializer. The pattern being an identifier - // pattern is sufficient to ensure that this is not the case. - let.getPat().(IdentPat) = n1 and - let.getInitializer() = n2 + identLetStmt(let, n1, n2) ) or exists(LetExpr let | @@ -513,6 +603,21 @@ module CertainTypeInference { ) 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() + ) } pragma[nomagic] @@ -577,6 +682,10 @@ module CertainTypeInference { path.isEmpty() and result instanceof NeverType or + n instanceof ClosureExpr and + path.isEmpty() and + result = closureRootType() + or infersCertainTypeAt(n, path, result.getATypeParameter()) } @@ -594,17 +703,18 @@ module CertainTypeInference { } /** - * Holds if `n` has complete and certain type information at _some_ type path. + * Holds if `n` has complete and certain type information at `path`. */ pragma[nomagic] - predicate hasInferredCertainType(AstNode n) { exists(inferCertainType(n, _)) } + predicate hasInferredCertainType(AstNode n, TypePath path) { exists(inferCertainType(n, path)) } /** - * Holds if `n` having type `t` at `path` conflicts with certain type information. + * Holds if `n` having type `t` at `path` conflicts with certain type information + * at `prefix`. */ - bindingset[n, path, t] + bindingset[n, prefix, path, t] pragma[inline_late] - predicate certainTypeConflict(AstNode n, TypePath path, Type t) { + 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 @@ -613,7 +723,7 @@ module CertainTypeInference { // otherwise there is a conflict. // // Below, `prefix` is `T1.T2...Ti` and `tp` is `T(i+1)`. - exists(TypePath prefix, TypePath suffix, TypeParameter tp, Type certainType | + exists(TypePath suffix, TypeParameter tp, Type certainType | path = prefix.appendInverse(suffix) and tp = suffix.getHead() and inferCertainType(n, prefix) = certainType and @@ -775,17 +885,6 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n1.(ArrayRepeatExpr).getRepeatOperand() = n2 and prefix1 = TypePath::singleton(getArrayTypeParameter()) 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() - ) - or - n1.(ClosureExpr).getClosureBody() = n2 and - prefix1 = closureReturnPath() and - prefix2.isEmpty() } /** @@ -821,6 +920,9 @@ private predicate lubCoercion(AstNode parent, AstNode child, TypePath prefix) { 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 @@ -828,6 +930,19 @@ private predicate lubCoercion(AstNode parent, AstNode child, TypePath prefix) { ) } +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 @@ -868,185 +983,6 @@ private Type inferTypeEquality(AstNode n, TypePath path) { ) } -/** - * A matching configuration for resolving types of struct expressions - * like `Foo { bar = baz }`. - * - * This also includes nullary struct expressions like `None`. - */ -private module StructExprMatchingInput implements MatchingInputSig { - private newtype TPos = - TFieldPos(string name) { exists(any(Declaration decl).getField(name)) } or - TStructPos() - - class DeclarationPosition extends TPos { - string asFieldPos() { this = TFieldPos(result) } - - predicate isStructPos() { this = TStructPos() } - - string toString() { - result = this.asFieldPos() - or - this.isStructPos() and - result = "(struct)" - } - } - - abstract class Declaration extends AstNode { - final TypeParameter getTypeParameter(TypeParameterPosition ppos) { - typeParamMatchPosition(this.getTypeItem().getGenericParamList().getATypeParam(), result, ppos) - } - - abstract StructField getField(string name); - - abstract TypeItem getTypeItem(); - - Type getDeclaredType(DeclarationPosition dpos, TypePath path) { - // type of a field - exists(TypeMention tp | - tp = this.getField(dpos.asFieldPos()).getTypeRepr() and - result = tp.getTypeAt(path) - ) - or - // type parameter of the struct itself - dpos.isStructPos() and - result = this.getTypeParameter(_) and - path = TypePath::singleton(result) - or - // type of the struct or enum itself - dpos.isStructPos() and - path.isEmpty() and - result = TDataType(this.getTypeItem()) - } - } - - private class StructDecl extends Declaration, Struct { - StructDecl() { this.isStruct() or this.isUnit() } - - override StructField getField(string name) { result = this.getStructField(name) } - - override TypeItem getTypeItem() { result = this } - } - - private class StructVariantDecl extends Declaration, Variant { - StructVariantDecl() { this.isStruct() or this.isUnit() } - - override StructField getField(string name) { result = this.getStructField(name) } - - override TypeItem getTypeItem() { result = this.getEnum() } - } - - class AccessPosition = DeclarationPosition; - - abstract class Access extends AstNode { - pragma[nomagic] - abstract AstNode getNodeAt(AccessPosition apos); - - pragma[nomagic] - Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) - } - - pragma[nomagic] - abstract Path getStructPath(); - - pragma[nomagic] - Declaration getTarget() { result = resolvePath(this.getStructPath()) } - - pragma[nomagic] - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - // Handle constructions that use `Self {...}` syntax - exists(TypeMention tm, TypePath path0 | - tm = this.getStructPath() and - result = tm.getTypeAt(path0) and - path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) - ) - } - - /** - * Holds if the return type of this struct expression at `path` may have to - * be inferred from the context. - */ - pragma[nomagic] - predicate hasUnknownTypeAt(DeclarationPosition pos, TypePath path) { - exists(Declaration d, TypeParameter tp | - d = this.getTarget() and - pos.isStructPos() and - tp = d.getDeclaredType(pos, path) and - not exists(DeclarationPosition fieldPos | - not fieldPos.isStructPos() and - tp = d.getDeclaredType(fieldPos, _) - ) and - // check that no explicit type arguments have been supplied for `tp` - not exists(TypeArgumentPosition tapos | - exists(this.getTypeArgument(tapos, _)) and - TTypeParamTypeParameter(tapos.asTypeParam()) = tp - ) - ) - } - } - - private class StructExprAccess extends Access, StructExpr { - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = super.getTypeArgument(apos, path) - or - exists(TypePath suffix | - suffix.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) and - result = CertainTypeInference::inferCertainType(this, suffix) - ) - } - - override AstNode getNodeAt(AccessPosition apos) { - result = this.getFieldExpr(apos.asFieldPos()).getExpr() - or - result = this and - apos.isStructPos() - } - - override Path getStructPath() { result = this.getPath() } - } - - /** - * A potential nullary struct/variant construction such as `None`. - */ - private class PathExprAccess extends Access, PathExpr { - PathExprAccess() { not exists(CallExpr ce | this = ce.getFunction()) } - - override AstNode getNodeAt(AccessPosition apos) { - result = this and - apos.isStructPos() - } - - override Path getStructPath() { result = this.getPath() } - } - - predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos = dpos - } -} - -private module StructExprMatching = Matching; - -pragma[nomagic] -private Type inferStructExprType0(AstNode n, FunctionPosition pos, TypePath path) { - exists(StructExprMatchingInput::Access a, StructExprMatchingInput::AccessPosition apos | - n = a.getNodeAt(apos) and - if apos.isStructPos() then pos.isReturn() else pos.asPosition() = 0 // the actual position doesn't matter, as long as it is positional - | - result = StructExprMatching::inferAccessType(a, apos, path) - or - a.hasUnknownTypeAt(apos, path) and - result = TUnknownType() - ) -} - -/** - * Gets the type of `n` at `path`, where `n` is either a struct expression or - * a field expression of a struct expression. - */ -private predicate inferStructExprType = - ContextTyping::CheckContextTyping::check/2; - pragma[nomagic] private TupleType inferTupleRootType(AstNode n) { // `typeEquality` handles the non-root cases @@ -1106,6 +1042,43 @@ private Trait getCallExprTraitQualifier(CallExpr ce) { ) } +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. */ @@ -1126,7 +1099,7 @@ private module ContextTyping { or exists(TypeParameter mid | assocFunctionMentionsTypeParameterAtNonRetPos(i, f, mid) and - tp = getATypeParameterConstraint(mid, _) + tp = getATypeParameterConstraint(mid).getTypeAt(_) ) } @@ -1157,9 +1130,7 @@ private module ContextTyping { abstract class ContextTypedCallCand extends AstNode { abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); - private predicate hasTypeArgument(TypeArgumentPosition apos) { - exists(this.getTypeArgument(apos, _)) - } + predicate hasTypeArgument(TypeArgumentPosition apos) { exists(this.getTypeArgument(apos, _)) } /** * Holds if this call resolves to `target` inside `i`, and the return type @@ -1196,7 +1167,12 @@ private module ContextTyping { pragma[nomagic] private predicate hasUnknownType(AstNode n) { hasUnknownTypeAt(n, _) } - signature Type inferCallTypeSig(AstNode n, FunctionPosition pos, TypePath path); + 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 @@ -1205,73 +1181,32 @@ private module ContextTyping { * are context-typed. */ module CheckContextTyping { - pragma[nomagic] - private Type inferCallNonReturnType(AstNode n, FunctionPosition pos, TypePath path) { - result = inferCallType(n, pos, path) and - not pos.isReturn() - } - pragma[nomagic] private Type inferCallNonReturnType( - AstNode n, FunctionPosition pos, TypePath prefix, TypePath path + AstNode n, FunctionPositionKind kind, TypePath prefix, TypePath path ) { - result = inferCallNonReturnType(n, pos, path) and + 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, any(FunctionPosition pos | pos.isReturn()), path) + result = inferCallType(n, ReturnKind(), path) or - exists(FunctionPosition pos, TypePath prefix | - result = inferCallNonReturnType(n, pos, prefix, path) and + 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 pos.isSelf() then not prefix.isEmpty() else any() + if kind = SelfKind() then not prefix.isEmpty() else any() ) } } } -/** - * Holds if function `f` with the name `name` and the arity `arity` exists in - * `i`, and the type at position `pos` is `t`. - */ -pragma[nomagic] -private predicate assocFunctionInfo( - Function f, string name, int arity, ImplOrTraitItemNode i, FunctionPosition pos, - AssocFunctionType t -) { - f = i.getASuccessor(name) and - arity = f.getParamList().getNumberOfParams() and - t.appliesTo(f, i, pos) -} - -/** - * Holds if function `f` with the name `name` and the arity `arity` exists in - * blanket (like) implementation `impl` of `trait`, and the type at position - * `pos` is `t`. - * - * `blanketPath` points to the type `blanketTypeParam` inside `t`, which - * is the type parameter used in the blanket implementation. - */ -pragma[nomagic] -private predicate functionInfoBlanketLike( - Function f, string name, int arity, ImplItemNode impl, Trait trait, FunctionPosition pos, - AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam -) { - exists(TypePath blanketSelfPath | - assocFunctionInfo(f, name, arity, impl, pos, t) and - TTypeParamTypeParameter(blanketTypeParam) = t.getTypeAt(blanketPath) and - blanketPath = any(string s) + blanketSelfPath and - BlanketImplementation::isBlanketLike(impl, blanketSelfPath, blanketTypeParam) and - trait = impl.resolveTraitTy() - ) -} - /** * 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`, @@ -1327,7 +1262,7 @@ private class BorrowKind extends TBorrowKind { } /** - * Provides logic for resolving calls to methods. + * Provides logic for resolving calls to associated functions. * * When resolving a method call, a list of [candidate receiver types][1] is constructed * @@ -1361,190 +1296,344 @@ private class BorrowKind extends TBorrowKind { * * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers */ -private module MethodResolution { +private module AssocFunctionResolution { /** - * Holds if method `m` with the name `name` and the arity `arity` exists in - * `i`, and the type of the `self` parameter is `selfType`. - * - * `strippedTypePath` points to the type `strippedType` inside `selfType`, - * which is the (possibly complex-stripped) root type of `selfType`. For example, - * if `m` has a `&self` parameter, then `strippedTypePath` is `getRefSharedTypeParameter()` - * and `strippedType` is the type inside the reference. + * Holds if function `f` with the name `name` and the arity `arity` exists in + * `i`, and the type at function-call adjusted position `pos` is `t`. */ pragma[nomagic] - private predicate methodInfo( - Method m, string name, int arity, FunctionPosition selfPos, ImplOrTraitItemNode i, - AssocFunctionType selfType, TypePath strippedTypePath, Type strippedType + private predicate assocFunctionInfo( + Function f, string name, int arity, ImplOrTraitItemNode i, FunctionPosition pos, + AssocFunctionType t ) { - assocFunctionInfo(m, name, arity, i, selfPos, selfType) and - strippedType = selfType.getTypeAt(strippedTypePath) and - isComplexRootStripped(strippedTypePath, strippedType) and - selfPos.isSelfOrTypeQualifier() + f = i.getASuccessor(name) and + arity = f.getNumberOfParamsInclSelf() and + t.appliesTo(f, i, pos) } + /** + * Holds if the non-method trait function `f` mentions the implicit `Self` type + * parameter at position `pos`. + */ pragma[nomagic] - private predicate methodInfoTypeParam( - Method m, string name, int arity, FunctionPosition selfPos, ImplOrTraitItemNode i, - AssocFunctionType selfType, TypePath strippedTypePath, TypeParam tp + private predicate traitSelfTypeParameterOccurrence( + TraitItemNode trait, NonMethodFunction f, FunctionPosition pos ) { - methodInfo(m, name, arity, selfPos, i, selfType, strippedTypePath, TTypeParamTypeParameter(tp)) + FunctionOverloading::traitTypeParameterOccurrence(trait, f, _, pos, _, TSelfTypeParameter(trait)) } /** - * Same as `methodInfo`, but restricted to non-blanket implementations, and - * allowing for any `strippedType` when the corresponding type inside `m` is - * a type parameter. + * Holds if the non-method function `f` implements a trait function that mentions + * the implicit `Self` type parameter at position `pos`. */ - pragma[inline] - private predicate methodInfoNonBlanket( - Method m, string name, int arity, FunctionPosition selfPos, ImplOrTraitItemNode i, - AssocFunctionType selfType, TypePath strippedTypePath, Type strippedType + pragma[nomagic] + private predicate traitImplSelfTypeParameterOccurrence( + ImplItemNode impl, NonMethodFunction f, FunctionPosition pos ) { - ( - methodInfo(m, name, arity, selfPos, i, selfType, strippedTypePath, strippedType) or - methodInfoTypeParam(m, name, arity, selfPos, i, selfType, strippedTypePath, _) - ) and - not BlanketImplementation::isBlanketLike(i, _, _) + exists(NonMethodFunction traitFunction | + f = impl.getAnAssocItem() and + f.implements(traitFunction) and + traitSelfTypeParameterOccurrence(_, traitFunction, pos) + ) } + private module TypeOption = Option; + + private class TypeOption = TypeOption::Option; + /** - * Holds if method `m` with the name `name` and the arity `arity` exists in - * blanket (like) implementation `impl` of `trait`, and the type of the `self` - * parameter is `selfType`. + * Holds if function `f` with the name `name` and the arity `arity` exists in + * `i`, and the type at function-call adjusted position `selfPos` is `selfType`. * - * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which - * is the type parameter used in the blanket implementation. + * `selfPos` is a position relevant for call resolution: either a position + * corresponding to the `self` parameter of `f` (if present); a type qualifier + * position; or a position where the implicit `Self` type parameter of some trait + * is mentioned in some non-method function `f_trait`, and either `f = f_trait` + * or `f` implements `f_trait`. + * + * `strippedTypePath` points to the type `strippedType` inside `selfType`, which + * is the (possibly complex-stripped) root type of `selfType`. For example, if + * `f` has a `&self` parameter, then `strippedTypePath` is `getRefSharedTypeParameter()` + * and `strippedType` is the type inside the reference. + * + * `implType` is the type being implemented by `i` (`None` when `i` is a trait). + * + * `trait` is the trait being implemented by `i` or `i` itself (`None` when `i` is inherent). + * + * `isMethod` indicates whether `f` is a method. + */ + pragma[nomagic] + private predicate assocFunctionInfo( + Function f, string name, int arity, FunctionPosition selfPos, ImplOrTraitItemNode i, + AssocFunctionType selfType, TypePath strippedTypePath, Type strippedType, TypeOption implType, + TypeOption trait, boolean isMethod + ) { + assocFunctionInfo(f, name, arity, i, selfPos, selfType) and + strippedType = selfType.getTypeAt(strippedTypePath) and + ( + isComplexRootStripped(strippedTypePath, strippedType) + or + selfPos.isTypeQualifier() and strippedTypePath.isEmpty() + ) and + ( + f instanceof Method and + selfPos.asPosition() = 0 + or + selfPos.isTypeQualifier() + or + traitSelfTypeParameterOccurrence(i, f, selfPos) + or + traitImplSelfTypeParameterOccurrence(i, f, selfPos) + ) and + ( + implType.asSome() = resolveImplSelfTypeAt(i, TypePath::nil()) + or + i instanceof Trait and + implType.isNone() + ) and + ( + trait.asSome() = + [ + TTrait(i).(Type), + TTrait(i.(ImplItemNode).resolveTraitTy()).(Type) + ] + or + i.(Impl).isInherent() and trait.isNone() + ) and + if f instanceof Method then isMethod = true else isMethod = false + } + + /** + * Holds if function `f` with the name `name` and the arity `arity` exists in + * blanket (like) implementation `impl`, and the type at function-call adjusted + * position `selfPos` is `selfType`. + * + * `selfPos` is a position relevant for call resolution: either a position + * corresponding to the `self` parameter of `f` (if present); a type qualifier + * position; or a position where the implicit `Self` type parameter of some trait + * is mentioned in some non-method function `f_trait`, and `f` implements `f_trait`. + * + * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which + * is the type parameter used in the blanket implementation. + * + * `implType` is the type being implemented by `i`. + * + * `trait` is the trait being implemented by `i`. + * + * `isMethod` indicates whether `f` is a method. */ pragma[nomagic] - private predicate methodInfoBlanketLike( - Method m, string name, int arity, FunctionPosition selfPos, ImplItemNode impl, Trait trait, - AssocFunctionType selfType, TypePath blanketPath, TypeParam blanketTypeParam + private predicate assocFunctionInfoBlanketLike( + Function f, string name, int arity, ImplItemNode impl, TypeOption implType, TypeOption trait, + FunctionPosition selfPos, AssocFunctionType selfType, TypePath blanketPath, + TypeParam blanketTypeParam, boolean isMethod ) { - functionInfoBlanketLike(m, name, arity, impl, trait, selfPos, selfType, blanketPath, - blanketTypeParam) and - selfPos.isSelfOrTypeQualifier() + exists(TypePath blanketSelfPath | + assocFunctionInfo(f, name, arity, selfPos, impl, selfType, _, _, implType, trait, isMethod) and + TTypeParamTypeParameter(blanketTypeParam) = selfType.getTypeAt(blanketPath) and + blanketPath = any(string s) + blanketSelfPath and + BlanketImplementation::isBlanketLike(impl, blanketSelfPath, blanketTypeParam) + ) } pragma[nomagic] - private predicate methodTraitInfo(string name, int arity, Trait trait) { + private predicate assocFunctionTraitInfo(string name, int arity, Trait trait) { exists(ImplItemNode i | - methodInfo(_, name, arity, _, i, _, _, _) and + assocFunctionInfo(_, name, arity, i, _, _) and trait = i.resolveTraitTy() ) or - methodInfo(_, name, arity, _, trait, _, _, _) + assocFunctionInfo(_, name, arity, trait, _, _) } pragma[nomagic] - private predicate methodCallTraitCandidate(Element mc, Trait trait) { - mc = - any(MethodCall mc0 | + private predicate assocFunctionCallTraitCandidate(Element afc, Trait trait) { + afc = + any(AssocFunctionCall afc0 | exists(string name, int arity | - mc0.hasNameAndArity(name, arity) and - methodTraitInfo(name, arity, trait) - | - not mc0.hasTrait() - or - trait = mc0.getTrait() + afc0.hasNameAndArity(name, arity) and + assocFunctionTraitInfo(name, arity, trait) and + // we only need to check visibility of traits that are not mentioned explicitly + not afc0.hasATrait() ) ) } - private module MethodTraitIsVisible = TraitIsVisible; + private module AssocFunctionTraitIsVisible = TraitIsVisible; + + bindingset[afc, impl] + pragma[inline_late] + private predicate callVisibleImplTraitCandidate(AssocFunctionCall afc, ImplItemNode impl) { + AssocFunctionTraitIsVisible::traitIsVisible(afc, impl.resolveTraitTy()) + } - private predicate methodCallVisibleTraitCandidate = MethodTraitIsVisible::traitIsVisible/2; + /** + * Checks that the explicit type qualifier of a call (if any), `typeQualifier`, + * matches the type being implemented by the target, `implType`. + */ + bindingset[implType] + private predicate callTypeQualifierCheck(TypeOption implType, TypeOption typeQualifier) { + typeQualifier = [implType, TypeOption::none_()] + } - bindingset[mc, impl] + /** + * Checks that the explicit trait qualifier of a call (if any), `traitQualifier`, + * matches the trait being implemented by the target (or in which the target is defined), + * `trait`, and that when a receiver is present in the call, the target is a method. + */ + bindingset[trait, isMethod] pragma[inline_late] - private predicate methodCallVisibleImplTraitCandidate(MethodCall mc, ImplItemNode impl) { - methodCallVisibleTraitCandidate(mc, impl.resolveTraitTy()) + private predicate callTraitQualifierAndReceiverCheck( + TypeOption trait, Boolean isMethod, TypeOption traitQualifier, boolean hasReceiver + ) { + traitQualifier = [trait, TypeOption::none_()] and + hasReceiver = [isMethod, false] + } + + bindingset[implType, trait, isMethod] + private predicate callCheck( + TypeOption implType, TypeOption trait, Boolean isMethod, TypeOption typeQualifier, + TypeOption traitQualifier, boolean hasReceiver + ) { + callTypeQualifierCheck(implType, typeQualifier) and + callTraitQualifierAndReceiverCheck(trait, isMethod, traitQualifier, hasReceiver) + } + + pragma[nomagic] + private predicate assocFunctionInfoNonBlanketLikeCheck( + Function f, string name, int arity, FunctionPosition selfPos, ImplOrTraitItemNode i, + AssocFunctionType selfType, TypePath strippedTypePath, Type strippedType, + TypeOption typeQualifier, TypeOption traitQualifier, boolean hasReceiver + ) { + exists(TypeOption implType, TypeOption trait, boolean isMethod | + assocFunctionInfo(f, name, arity, selfPos, i, selfType, strippedTypePath, strippedType, + implType, trait, isMethod) and + not BlanketImplementation::isBlanketLike(i, _, _) and + callCheck(implType, trait, isMethod, typeQualifier, traitQualifier, hasReceiver) + ) + } + + pragma[nomagic] + private predicate assocFunctionInfoNonBlanketLikeTypeParamCheck( + Function f, string name, int arity, FunctionPosition selfPos, ImplOrTraitItemNode i, + AssocFunctionType selfType, TypePath strippedTypePath, TypeOption typeQualifier, + TypeOption traitQualifier, boolean hasReceiver + ) { + assocFunctionInfoNonBlanketLikeCheck(f, name, arity, selfPos, i, selfType, strippedTypePath, + TTypeParamTypeParameter(_), typeQualifier, traitQualifier, hasReceiver) } /** - * Holds if method call `mc` may target a method in `i` with `self` parameter having - * type `selfType`. + * Holds if call `afc` may target function `f` in `i` with type `selfType` at + * function-call adjusted position `selfPos`. * * `strippedTypePath` points to the type `strippedType` inside `selfType`, * which is the (possibly complex-stripped) root type of `selfType`. - * - * This predicate only checks for matching method names and arities, and whether - * the trait being implemented by `i` (when `i` is not a trait itself) is visible - * at `mc`. */ - bindingset[mc, strippedTypePath, strippedType] + bindingset[afc, strippedTypePath, strippedType] pragma[inline_late] - private predicate methodCallNonBlanketCandidate( - MethodCall mc, Method m, FunctionPosition selfPos, ImplOrTraitItemNode i, - AssocFunctionType self, TypePath strippedTypePath, Type strippedType + private predicate nonBlanketLikeCandidate( + AssocFunctionCall afc, Function f, FunctionPosition selfPos, ImplOrTraitItemNode i, + AssocFunctionType selfType, TypePath strippedTypePath, Type strippedType ) { - exists(string name, int arity | - mc.hasNameAndArity(name, arity) and - methodInfoNonBlanket(m, name, arity, selfPos, i, self, strippedTypePath, strippedType) + exists( + string name, int arity, TypeOption typeQualifier, TypeOption traitQualifier, + boolean hasReceiver | - i = - any(Impl impl | - not impl.hasTrait() - or - methodCallVisibleImplTraitCandidate(mc, impl) - ) - or - methodCallVisibleTraitCandidate(mc, i) + afc.hasSyntacticInfo(name, arity, typeQualifier, traitQualifier, hasReceiver) and + if not afc.hasATrait() and i.(Impl).hasTrait() + then callVisibleImplTraitCandidate(afc, i) + else any() + | + assocFunctionInfoNonBlanketLikeCheck(f, name, arity, selfPos, i, selfType, strippedTypePath, + strippedType, typeQualifier, traitQualifier, hasReceiver) or - i.(ImplItemNode).resolveTraitTy() = mc.getTrait() + assocFunctionInfoNonBlanketLikeTypeParamCheck(f, name, arity, selfPos, i, selfType, + strippedTypePath, typeQualifier, traitQualifier, hasReceiver) + ) + } + + bindingset[name, arity, typeQualifier, traitQualifier, hasReceiver] + pragma[inline_late] + private predicate assocFunctionInfoBlanketLikeCheck( + Function f, string name, int arity, FunctionPosition selfPos, ImplItemNode impl, + AssocFunctionType selfType, TypePath blanketPath, TypeParam blanketTypeParam, + TypeOption typeQualifier, TypeOption traitQualifier, boolean hasReceiver + ) { + exists(TypeOption implType, TypeOption trait, boolean isMethod | + assocFunctionInfoBlanketLike(f, name, arity, impl, implType, trait, selfPos, selfType, + blanketPath, blanketTypeParam, isMethod) and + callTraitQualifierAndReceiverCheck(trait, isMethod, traitQualifier, hasReceiver) and + if impl.isBlanketImplementation() + then any() + else callTypeQualifierCheck(implType, typeQualifier) ) } /** - * Holds if method call `mc` may target a method in blanket (like) implementation - * `impl` with `self` parameter having type `selfType`. + * Holds if call `afc` may target function `f` in blanket (like) implementation + * `impl` with type `selfType` at function-call adjusted position `selfPos`. * * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which * is the type parameter used in the blanket implementation. - * - * This predicate only checks for matching method names and arities, and whether - * the trait being implemented by `i` (when `i` is not a trait itself) is visible - * at `mc`. */ - bindingset[mc] + bindingset[afc] pragma[inline_late] - private predicate methodCallBlanketLikeCandidate( - MethodCall mc, Method m, FunctionPosition selfPos, ImplItemNode impl, AssocFunctionType self, - TypePath blanketPath, TypeParam blanketTypeParam + private predicate blanketLikeCandidate( + AssocFunctionCall afc, Function f, FunctionPosition selfPos, ImplItemNode impl, + AssocFunctionType self, TypePath blanketPath, TypeParam blanketTypeParam ) { - exists(string name, int arity | - mc.hasNameAndArity(name, arity) and - methodInfoBlanketLike(m, name, arity, selfPos, impl, _, self, blanketPath, blanketTypeParam) + exists( + string name, int arity, TypeOption typeQualifier, TypeOption traitQualifier, + boolean hasReceiver | - methodCallVisibleImplTraitCandidate(mc, impl) - or - impl.resolveTraitTy() = mc.getTrait() + afc.hasSyntacticInfo(name, arity, typeQualifier, traitQualifier, hasReceiver) and + assocFunctionInfoBlanketLikeCheck(f, name, arity, selfPos, impl, self, blanketPath, + blanketTypeParam, typeQualifier, traitQualifier, hasReceiver) + | + if not afc.hasATrait() then callVisibleImplTraitCandidate(afc, impl) else any() ) } /** - * A (potential) method call. + * A (potential) call to an associated function. * * This is either: * - * 1. `MethodCallMethodCallExpr`: an actual method call, `x.m()`; - * 2. `MethodCallIndexExpr`: an index expression, `x[i]`, which is [syntactic sugar][1] + * 1. `MethodCallExprAssocFunctionCall`: a method call, `x.m()`; + * 2. `IndexExprAssocFunctionCall`: an index expression, `x[i]`, which is [syntactic sugar][1] * for `*x.index(i)`; - * 3. `MethodCallCallExpr`: a qualified function call, `Q::m(x)`, where `m` is a method; - * or - * 4. `MethodCallOperation`: an operation expression, `x + y`, which is syntactic sugar + * 3. `CallExprAssocFunctionCall`: a qualified function call, `Q::f(x)`; or + * 4. `OperationAssocFunctionCall`: an operation expression, `x + y`, which is syntactic sugar * for `Add::add(x, y)`. + * 5. `DynamicAssocFunctionCall`: a call to a closure, `c(x)`, which is syntactic sugar for + * `c.call_once(x)`, `c.call_mut(x)`, or `c.call(x)`. * * Note that only in case 1 and 2 is auto-dereferencing and borrowing allowed. * - * Note also that only case 4 is a _potential_ method call; in all other cases, we are - * guaranteed that the target is a method. + * Note also that only case 3 is a _potential_ call; in all other cases, we are guaranteed that + * the target is an associated function (in fact, a method). * * [1]: https://doc.rust-lang.org/std/ops/trait.Index.html */ - abstract class MethodCall extends Expr { + abstract class AssocFunctionCall extends Expr { + /** + * Holds if this call targets a function named `name` with `arity` parameters + * (including `self`). + */ + pragma[nomagic] abstract predicate hasNameAndArity(string name, int arity); - abstract Expr getArg(ArgumentPosition pos); + abstract AstNode getNonReturnNodeAt(FunctionPosition pos); + + AstNode getNodeAt(FunctionPosition pos) { + result = this.getNonReturnNodeAt(pos) + or + result = this and pos.isReturn() + } + + /** Holds if this call has a receiver and hence must target a method. */ + abstract predicate hasReceiver(); abstract predicate supportsAutoDerefAndBorrow(); @@ -1554,336 +1643,242 @@ private module MethodResolution { /** Holds if this call targets a trait. */ predicate hasTrait() { exists(this.getTrait()) } - AstNode getNodeAt(FunctionPosition apos) { - result = this.getArg(apos.asArgumentPosition()) + Trait getATrait() { + result = this.getTrait() or - result = this and apos.isReturn() + result = getALookupTrait(this, getCallExprTypeQualifier(this, TypePath::nil(), _)) } - Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { - result = inferType(this.getArg(pos), path) + predicate hasATrait() { exists(this.getATrait()) } + + private Type getNonTypeParameterTypeQualifier() { + result = getCallExprTypeQualifier(this, TypePath::nil(), _) and + not result instanceof TypeParameter } /** - * Same as `getACandidateReceiverTypeAt`, but without borrows. + * Holds if this call has the given purely syntactic information, that is, + * information that does not rely on type inference. */ pragma[nomagic] - Type getACandidateReceiverTypeAtNoBorrow( - FunctionPosition selfPos, DerefChain derefChain, TypePath path + predicate hasSyntacticInfo( + string name, int arity, TypeOption typeQualifier, TypeOption traitQualifier, + boolean hasReceiver ) { - result = this.getArgumentTypeAt(selfPos.asArgumentPosition(), path) and - selfPos.isSelfOrTypeQualifier() and - derefChain.isEmpty() - or - exists(DerefImplItemNode impl, DerefChain suffix | - result = - ImplicitDeref::getDereferencedCandidateReceiverType(this, selfPos, impl, suffix, path) and - derefChain = DerefChain::cons(impl, suffix) + this.hasNameAndArity(name, arity) and + (if this.hasReceiver() then hasReceiver = true else hasReceiver = false) and + ( + typeQualifier.asSome() = this.getNonTypeParameterTypeQualifier() + or + not exists(this.getNonTypeParameterTypeQualifier()) and + typeQualifier.isNone() + ) and + ( + traitQualifier.asSome() = TTrait(this.getATrait()) + or + not this.hasATrait() and + traitQualifier.isNone() + ) + } + + Type getTypeAt(FunctionPosition pos, TypePath path) { + result = inferType(this.getNodeAt(pos), path) + } + + /** + * Holds if `selfPos` is a potentially relevant function-call adjusted position + * for resolving this call. + * + * Only holds when we don't know for sure that the target is a method (in those + * cases we rely on the receiver only). + */ + pragma[nomagic] + private predicate isRelevantSelfPos(FunctionPosition selfPos) { + not this.hasReceiver() and + exists(TypePath strippedTypePath, Type strippedType | + strippedType = substituteLookupTraits(this, this.getTypeAt(selfPos, strippedTypePath)) and + strippedType != TNeverType() and + strippedType != TUnknownType() + | + nonBlanketLikeCandidate(this, _, selfPos, _, _, strippedTypePath, strippedType) + or + blanketLikeCandidate(this, _, selfPos, _, _, strippedTypePath, _) ) } + predicate hasReceiverAtPos(FunctionPosition pos) { this.hasReceiver() and pos.asPosition() = 0 } + + pragma[nomagic] + private predicate hasIncompatibleArgsTarget( + ImplOrTraitItemNode i, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, + AssocFunctionType selfType + ) { + SelfArgIsInstantiationOf::argIsInstantiationOf(this, i, selfPos, derefChain, borrow, selfType) and + OverloadedCallArgsAreInstantiationsOf::argsAreNotInstantiationsOf(this, i) + } + /** - * Holds if the method inside `i` with matching name and arity can be ruled + * Holds if the function inside `i` with matching name and arity can be ruled * out as a target of this call, because the candidate receiver type represented - * by `derefChain` and `borrow` is incompatible with the `self` parameter type. + * by `derefChain` and `borrow` is incompatible with the type at function-call + * adjusted position `selfPos`. * * The types are incompatible because they disagree on a concrete type somewhere * inside `root`. */ pragma[nomagic] - private predicate hasIncompatibleTarget( + predicate hasIncompatibleTarget( ImplOrTraitItemNode i, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, Type root ) { - exists(TypePath path | - ReceiverIsInstantiationOfSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, selfPos, - derefChain, borrow), i, _, path) and - path.isCons(root.getATypeParameter(), _) + exists(AssocFunctionType selfType | root = selfType.getTypeAt(TypePath::nil()) | + this.hasIncompatibleArgsTarget(i, selfPos, derefChain, borrow, selfType) + or + SelfArgIsInstantiationOf::argIsNotInstantiationOf(this, i, selfPos, derefChain, borrow, + selfType) ) } /** - * Holds if the method inside blanket-like implementation `impl` with matching name + * Holds if the function inside blanket-like implementation `impl` with matching name * and arity can be ruled out as a target of this call, either because the candidate - * receiver type represented by `derefChain` and `borrow` is incompatible with the `self` - * parameter type, or because the blanket constraint is not satisfied. + * receiver type represented by `derefChain` and `borrow` is incompatible with the type + * at function-call adjusted position `selfPos`, or because the blanket constraint + * is not satisfied. */ pragma[nomagic] - private predicate hasIncompatibleBlanketLikeTarget( + predicate hasIncompatibleBlanketLikeTarget( ImplItemNode impl, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow ) { - ReceiverIsNotInstantiationOfBlanketLikeSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, + SelfArgIsNotInstantiationOfBlanketLike::argIsNotInstantiationOf(MkAssocFunctionCallCand(this, selfPos, derefChain, borrow), impl, _, _) or - ReceiverSatisfiesBlanketLikeConstraint::dissatisfiesBlanketConstraint(MkMethodCallCand(this, + ArgSatisfiesBlanketLikeConstraint::dissatisfiesBlanketConstraint(MkAssocFunctionCallCand(this, selfPos, derefChain, borrow), impl) } - /** - * Same as `getACandidateReceiverTypeAt`, but excludes pseudo types `!` and `unknown`. - */ pragma[nomagic] - Type getANonPseudoCandidateReceiverTypeAt( - FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath path + private predicate hasNoInherentTargetCheck( + FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow ) { - result = this.getACandidateReceiverTypeAt(selfPos, derefChain, borrow, path) and - result != TNeverType() and - result != TUnknownType() + MkAssocFunctionCallCand(this, selfPos, derefChain, borrow) + .(AssocFunctionCallCand) + .hasNoInherentTargetCheck() } pragma[nomagic] - private Type getComplexStrippedType( - FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath - ) { - result = - this.getANonPseudoCandidateReceiverTypeAt(selfPos, derefChain, borrow, strippedTypePath) and - isComplexRootStripped(strippedTypePath, result) - } - - bindingset[derefChain, borrow, strippedTypePath, strippedType] - private predicate hasNoCompatibleNonBlanketLikeTargetCheck( - FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath, - Type strippedType - ) { - forall(ImplOrTraitItemNode i | - methodCallNonBlanketCandidate(this, _, selfPos, i, _, strippedTypePath, strippedType) - | - this.hasIncompatibleTarget(i, selfPos, derefChain, borrow, strippedType) + private predicate hasNoInherentTargetTypeQualifierCheck() { + exists(FunctionPosition typeQualifierPos | + typeQualifierPos.isTypeQualifier() and + this.hasNoInherentTargetCheck(typeQualifierPos, DerefChain::nil(), TNoBorrowKind()) ) } - bindingset[derefChain, borrow, strippedTypePath, strippedType] - private predicate hasNoCompatibleTargetCheck( - FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath, - Type strippedType - ) { - this.hasNoCompatibleNonBlanketLikeTargetCheck(selfPos, derefChain, borrow, strippedTypePath, - strippedType) and - forall(ImplItemNode i | methodCallBlanketLikeCandidate(this, _, selfPos, i, _, _, _) | - this.hasIncompatibleBlanketLikeTarget(i, selfPos, derefChain, borrow) - ) - } - - bindingset[derefChain, borrow, strippedTypePath, strippedType] - private predicate hasNoCompatibleNonBlanketTargetCheck( - FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath, - Type strippedType - ) { - this.hasNoCompatibleNonBlanketLikeTargetCheck(selfPos, derefChain, borrow, strippedTypePath, - strippedType) and - forall(ImplItemNode i | - methodCallBlanketLikeCandidate(this, _, selfPos, i, _, _, _) and - not i.isBlanketImplementation() - | - this.hasIncompatibleBlanketLikeTarget(i, selfPos, derefChain, borrow) - ) - } - - // forex using recursion pragma[nomagic] - private predicate hasNoCompatibleTargetNoBorrowToIndex( - FunctionPosition selfPos, DerefChain derefChain, TypePath strippedTypePath, Type strippedType, - int n - ) { - ( - this.supportsAutoDerefAndBorrow() - or - // needed for the `hasNoCompatibleTarget` check in - // `ReceiverSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` - derefChain.isEmpty() - ) and - strippedType = - this.getComplexStrippedType(selfPos, derefChain, TNoBorrowKind(), strippedTypePath) and - n = -1 - or - this.hasNoCompatibleTargetNoBorrowToIndex(selfPos, derefChain, strippedTypePath, strippedType, - n - 1) and - exists(Type t | t = getNthLookupType(strippedType, n) | - this.hasNoCompatibleTargetCheck(selfPos, derefChain, TNoBorrowKind(), strippedTypePath, t) - ) + predicate hasNoInherentTarget(FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow) { + this.hasNoInherentTargetCheck(selfPos, derefChain, borrow) and + if exists(this.getNonTypeParameterTypeQualifier()) and not selfPos.isTypeQualifier() + then + // If this call is of the form `Foo::bar(x)` and we are resolving with respect to the type + // of `x`, then we additionally need to check that the type qualifier does not give rise + // to an inherent target + this.hasNoInherentTargetTypeQualifierCheck() + else any() } /** - * Holds if the candidate receiver type represented by `derefChain` does not - * have a matching method target. + * Same as `getSelfTypeAt`, but excludes pseudo types `!` and `unknown`. */ pragma[nomagic] - predicate hasNoCompatibleTargetNoBorrow(FunctionPosition selfPos, DerefChain derefChain) { - exists(Type strippedType | - this.hasNoCompatibleTargetNoBorrowToIndex(selfPos, derefChain, _, strippedType, - getLastLookupTypeIndex(strippedType)) - ) + Type getANonPseudoSelfTypeAt( + FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath path + ) { + result = this.getSelfTypeAt(selfPos, derefChain, borrow, path) and + result != TNeverType() and + result != TUnknownType() } - // forex using recursion pragma[nomagic] - private predicate hasNoCompatibleNonBlanketTargetNoBorrowToIndex( - FunctionPosition selfPos, DerefChain derefChain, TypePath strippedTypePath, Type strippedType, - int n + Type getComplexStrippedSelfType( + FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath ) { + result = this.getANonPseudoSelfTypeAt(selfPos, derefChain, borrow, strippedTypePath) and ( - this.supportsAutoDerefAndBorrow() + isComplexRootStripped(strippedTypePath, result) or - // needed for the `hasNoCompatibleTarget` check in - // `ReceiverSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` - derefChain.isEmpty() - ) and - strippedType = - this.getComplexStrippedType(selfPos, derefChain, TNoBorrowKind(), strippedTypePath) and - n = -1 - or - this.hasNoCompatibleNonBlanketTargetNoBorrowToIndex(selfPos, derefChain, strippedTypePath, - strippedType, n - 1) and - exists(Type t | t = getNthLookupType(strippedType, n) | - this.hasNoCompatibleNonBlanketTargetCheck(selfPos, derefChain, TNoBorrowKind(), - strippedTypePath, t) - ) - } - - /** - * Holds if the candidate receiver type represented by `derefChain` does not have - * a matching non-blanket method target. - */ - pragma[nomagic] - predicate hasNoCompatibleNonBlanketTargetNoBorrow( - FunctionPosition selfPos, DerefChain derefChain - ) { - exists(Type strippedType | - this.hasNoCompatibleNonBlanketTargetNoBorrowToIndex(selfPos, derefChain, _, strippedType, - getLastLookupTypeIndex(strippedType)) - ) - } - - // forex using recursion - pragma[nomagic] - private predicate hasNoCompatibleTargetSharedBorrowToIndex( - FunctionPosition selfPos, DerefChain derefChain, TypePath strippedTypePath, Type strippedType, - int n - ) { - this.hasNoCompatibleTargetNoBorrow(selfPos, derefChain) and - strippedType = - this.getComplexStrippedType(selfPos, derefChain, TSomeBorrowKind(false), strippedTypePath) and - n = -1 - or - this.hasNoCompatibleTargetSharedBorrowToIndex(selfPos, derefChain, strippedTypePath, - strippedType, n - 1) and - exists(Type t | t = getNthLookupType(strippedType, n) | - this.hasNoCompatibleNonBlanketLikeTargetCheck(selfPos, derefChain, TSomeBorrowKind(false), - strippedTypePath, t) + selfPos.isTypeQualifier() and strippedTypePath.isEmpty() ) } /** - * Holds if the candidate receiver type represented by `derefChain`, followed - * by a shared borrow, does not have a matching method target. + * Holds if the candidate receiver type represented by `derefChain` and `borrow` + * does not have a matching call target at function-call adjusted position `selfPos`. */ - pragma[nomagic] - predicate hasNoCompatibleTargetSharedBorrow(FunctionPosition selfPos, DerefChain derefChain) { - exists(Type strippedType | - this.hasNoCompatibleTargetSharedBorrowToIndex(selfPos, derefChain, _, strippedType, - getLastLookupTypeIndex(strippedType)) - ) - } - - // forex using recursion - pragma[nomagic] - private predicate hasNoCompatibleTargetMutBorrowToIndex( - FunctionPosition selfPos, DerefChain derefChain, TypePath strippedTypePath, Type strippedType, - int n + predicate hasNoCompatibleTarget( + FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow ) { - this.hasNoCompatibleTargetSharedBorrow(selfPos, derefChain) and - strippedType = - this.getComplexStrippedType(selfPos, derefChain, TSomeBorrowKind(true), strippedTypePath) and - n = -1 - or - this.hasNoCompatibleTargetMutBorrowToIndex(selfPos, derefChain, strippedTypePath, - strippedType, n - 1) and - exists(Type t | t = getNthLookupType(strippedType, n) | - this.hasNoCompatibleNonBlanketLikeTargetCheck(selfPos, derefChain, TSomeBorrowKind(true), - strippedTypePath, t) - ) + NoCompatibleTarget::hasNoCompatibleTarget(this, selfPos, derefChain, borrow) } /** - * Holds if the candidate receiver type represented by `derefChain`, followed - * by a `mut` borrow, does not have a matching method target. + * Holds if the candidate receiver type represented by `derefChain` and `borrow` + * does not have a matching non-blanket call target at function-call adjusted + * position `selfPos`. */ - pragma[nomagic] - predicate hasNoCompatibleTargetMutBorrow(FunctionPosition selfPos, DerefChain derefChain) { - exists(Type strippedType | - this.hasNoCompatibleTargetMutBorrowToIndex(selfPos, derefChain, _, strippedType, - getLastLookupTypeIndex(strippedType)) - ) - } - - // forex using recursion - pragma[nomagic] - private predicate hasNoCompatibleNonBlanketTargetSharedBorrowToIndex( - FunctionPosition selfPos, DerefChain derefChain, TypePath strippedTypePath, Type strippedType, - int n + predicate hasNoCompatibleNonBlanketTarget( + FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow ) { - this.hasNoCompatibleTargetNoBorrow(selfPos, derefChain) and - strippedType = - this.getComplexStrippedType(selfPos, derefChain, TSomeBorrowKind(false), strippedTypePath) and - n = -1 - or - this.hasNoCompatibleNonBlanketTargetSharedBorrowToIndex(selfPos, derefChain, strippedTypePath, - strippedType, n - 1) and - exists(Type t | t = getNthLookupType(strippedType, n) | - this.hasNoCompatibleNonBlanketTargetCheck(selfPos, derefChain, TSomeBorrowKind(false), - strippedTypePath, t) - ) + NoCompatibleTarget::hasNoCompatibleNonBlanketTarget(this, selfPos, derefChain, borrow) } /** - * Holds if the candidate receiver type represented by `derefChain`, followed - * by a shared borrow, does not have a matching non-blanket method target. + * Same as `getSelfTypeAt`, but without borrows. */ pragma[nomagic] - predicate hasNoCompatibleNonBlanketTargetSharedBorrow( - FunctionPosition selfPos, DerefChain derefChain - ) { - exists(Type strippedType | - this.hasNoCompatibleNonBlanketTargetSharedBorrowToIndex(selfPos, derefChain, _, - strippedType, getLastLookupTypeIndex(strippedType)) + Type getSelfTypeAtNoBorrow(FunctionPosition selfPos, DerefChain derefChain, TypePath path) { + result = this.getTypeAt(selfPos, path) and + derefChain.isEmpty() and + ( + this.hasReceiverAtPos(selfPos) + or + selfPos.isTypeQualifier() + or + this.isRelevantSelfPos(selfPos) ) - } - - // forex using recursion - pragma[nomagic] - private predicate hasNoCompatibleNonBlanketTargetMutBorrowToIndex( - FunctionPosition selfPos, DerefChain derefChain, TypePath strippedTypePath, Type strippedType, - int n - ) { - this.hasNoCompatibleNonBlanketTargetSharedBorrow(selfPos, derefChain) and - strippedType = - this.getComplexStrippedType(selfPos, derefChain, TSomeBorrowKind(true), strippedTypePath) and - n = -1 or - this.hasNoCompatibleNonBlanketTargetMutBorrowToIndex(selfPos, derefChain, strippedTypePath, - strippedType, n - 1) and - exists(Type t | t = getNthLookupType(strippedType, n) | - this.hasNoCompatibleNonBlanketTargetCheck(selfPos, derefChain, TSomeBorrowKind(true), - strippedTypePath, t) + exists(DerefImplItemNode impl, DerefChain suffix | + result = + ImplicitDeref::getDereferencedCandidateReceiverType(this, selfPos, impl, suffix, path) and + derefChain = DerefChain::cons(impl, suffix) ) } /** - * Holds if the candidate receiver type represented by `derefChain`, followed - * by a `mut` borrow, does not have a matching non-blanket method target. + * Holds if this call may have an implicit borrow of kind `borrow` at + * function-call adjusted position `selfPos` with the given `derefChain`. */ pragma[nomagic] - predicate hasNoCompatibleNonBlanketTargetMutBorrow( - FunctionPosition selfPos, DerefChain derefChain + predicate hasImplicitBorrowCand( + FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow ) { - exists(Type strippedType | - this.hasNoCompatibleNonBlanketTargetMutBorrowToIndex(selfPos, derefChain, _, strippedType, - getLastLookupTypeIndex(strippedType)) + exists(BorrowKind prev | this.hasNoCompatibleTarget(selfPos, derefChain, prev) | + // first try shared borrow + prev.isNoBorrow() and + borrow.isSharedBorrow() + or + // then try mutable borrow + prev.isSharedBorrow() and + borrow.isMutableBorrow() ) } /** - * Gets a [candidate receiver type][1] of this method call at `path`. + * Gets the type of this call at function-call adjusted position `selfPos` and + * type path `path`. + * + * In case this call supports auto-dereferencing and borrowing and `selfPos` is + * position 0 (corresponding to the receiver), the result is a + * [candidate receiver type][1]: * * The type is obtained by repeatedly dereferencing the receiver expression's type, * as long as the method cannot be resolved in an earlier candidate type, and possibly @@ -1895,45 +1890,38 @@ private module MethodResolution { * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers */ pragma[nomagic] - Type getACandidateReceiverTypeAt( + Type getSelfTypeAt( FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath path ) { - result = this.getACandidateReceiverTypeAtNoBorrow(selfPos, derefChain, path) and + result = this.getSelfTypeAtNoBorrow(selfPos, derefChain, path) and borrow.isNoBorrow() or exists(RefType rt | - // first try shared borrow - this.supportsAutoDerefAndBorrow() and - this.hasNoCompatibleTargetNoBorrow(selfPos, derefChain) and - borrow.isSharedBorrow() - or - // then try mutable borrow - this.hasNoCompatibleTargetSharedBorrow(selfPos, derefChain) and - borrow.isMutableBorrow() + this.hasImplicitBorrowCand(selfPos, derefChain, borrow) and + rt = borrow.getRefType() | - rt = borrow.getRefType() and - ( - path.isEmpty() and - result = rt - or - exists(TypePath suffix | - result = this.getACandidateReceiverTypeAtNoBorrow(selfPos, derefChain, suffix) and - path = TypePath::cons(rt.getPositionalTypeParameter(0), suffix) - ) + path.isEmpty() and + result = rt + or + exists(TypePath suffix | + result = this.getSelfTypeAtNoBorrow(selfPos, derefChain, suffix) and + path = TypePath::cons(rt.getPositionalTypeParameter(0), suffix) ) ) } /** - * Gets a method that this call resolves to after having applied a sequence of - * dereferences and possibly a borrow on the receiver type, encoded in `derefChain` - * and `borrow`. + * Gets a function that this call resolves to after having applied a sequence of + * dereferences and possibly a borrow on the receiver type at `selfPos`, encoded + * in `derefChain` and `borrow`. */ pragma[nomagic] - Method resolveCallTarget(ImplOrTraitItemNode i, DerefChain derefChain, BorrowKind borrow) { - exists(MethodCallCand mcc | - mcc = MkMethodCallCand(this, _, derefChain, borrow) and - result = mcc.resolveCallTarget(i) + AssocFunctionDeclaration resolveCallTarget( + ImplOrTraitItemNode i, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow + ) { + exists(AssocFunctionCallCand afcc | + afcc = MkAssocFunctionCallCand(this, selfPos, derefChain, borrow) and + result = afcc.resolveCallTarget(i) ) } @@ -1943,21 +1931,28 @@ private module MethodResolution { * resolve the call target. */ predicate argumentHasImplicitDerefChainBorrow(Expr arg, DerefChain derefChain, BorrowKind borrow) { - exists(this.resolveCallTarget(_, derefChain, borrow)) and - arg = this.getArg(any(ArgumentPosition apos | apos.isSelf())) and - not (derefChain.isEmpty() and borrow.isNoBorrow()) + exists(FunctionPosition selfAdj | + this.hasReceiverAtPos(selfAdj) and + exists(this.resolveCallTarget(_, selfAdj, derefChain, borrow)) and + arg = this.getNodeAt(selfAdj) and + not (derefChain.isEmpty() and borrow.isNoBorrow()) + ) } } - private class MethodCallMethodCallExpr extends MethodCall instanceof MethodCallExpr { - pragma[nomagic] + private class MethodCallExprAssocFunctionCall extends AssocFunctionCall instanceof MethodCallExpr { override predicate hasNameAndArity(string name, int arity) { name = super.getIdentifier().getText() and - arity = super.getArgList().getNumberOfArgs() + arity = super.getNumberOfSyntacticArguments() } - override Expr getArg(ArgumentPosition pos) { - result = MethodCallExpr.super.getSyntacticArgument(pos) + override predicate hasReceiver() { any() } + + override Expr getNonReturnNodeAt(FunctionPosition pos) { + result = super.getReceiver() and + pos.asPosition() = 0 + or + result = super.getPositionalArgument(pos.asPosition() - 1) } override predicate supportsAutoDerefAndBorrow() { any() } @@ -1965,24 +1960,25 @@ private module MethodResolution { override Trait getTrait() { none() } } - private class MethodCallIndexExpr extends MethodCall instanceof IndexExpr { + private class IndexExprAssocFunctionCall extends AssocFunctionCall, IndexExpr { private predicate isInMutableContext() { // todo: does not handle all cases yet VariableImpl::assignmentOperationDescendant(_, this) } - pragma[nomagic] override predicate hasNameAndArity(string name, int arity) { (if this.isInMutableContext() then name = "index_mut" else name = "index") and - arity = 1 + arity = 2 } - override Expr getArg(ArgumentPosition pos) { - pos.isSelf() and - result = super.getBase() - or + override predicate hasReceiver() { any() } + + override Expr getNonReturnNodeAt(FunctionPosition pos) { pos.asPosition() = 0 and - result = super.getIndex() + result = this.getBase() + or + pos.asPosition() = 1 and + result = this.getIndex() } override predicate supportsAutoDerefAndBorrow() { any() } @@ -1994,72 +1990,64 @@ private module MethodResolution { } } - private class MethodCallCallExpr extends MethodCall instanceof CallExpr { - MethodCallCallExpr() { + private class CallExprAssocFunctionCall extends AssocFunctionCall, CallExpr { + CallExprAssocFunctionCall() { exists(getCallExprPathQualifier(this)) and - // even if a method cannot be resolved by path resolution, it may still + // even if a target cannot be resolved by path resolution, it may still // be possible to resolve a blanket implementation (so not `forex`) - forall(ItemNode i | i = CallExprImpl::getResolvedFunction(this) | i instanceof Method) + forall(ItemNode i | i = CallExprImpl::getResolvedFunction(this) | + i instanceof AssocFunctionDeclaration + ) } - pragma[nomagic] override predicate hasNameAndArity(string name, int arity) { name = CallExprImpl::getFunctionPath(this).getText() and - arity = super.getArgList().getNumberOfArgs() - 1 + arity = this.getNumberOfSyntacticArguments() } - override Expr getArg(ArgumentPosition pos) { - pos.isSelf() and - result = super.getSyntacticPositionalArgument(0) - or - result = super.getSyntacticPositionalArgument(pos.asPosition() + 1) + override predicate hasReceiver() { none() } + + override Expr getNonReturnNodeAt(FunctionPosition pos) { + result = this.getSyntacticPositionalArgument(pos.asPosition()) } - override Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { - result = super.getArgumentTypeAt(pos, path) + override Type getTypeAt(FunctionPosition pos, TypePath path) { + result = super.getTypeAt(pos, path) or pos.isTypeQualifier() and result = getCallExprTypeQualifier(this, path, _) } - pragma[nomagic] - predicate hasNoInherentTarget() { - // `_` is fine below, because auto-deref/borrow is not supported - MkMethodCallCand(this, _, _, _).(MethodCallCand).hasNoInherentTarget() - } - override predicate supportsAutoDerefAndBorrow() { none() } override Trait getTrait() { result = getCallExprTraitQualifier(this) } } - final class MethodCallOperation extends MethodCall instanceof Operation { - pragma[nomagic] + final class OperationAssocFunctionCall extends AssocFunctionCall, Operation { override predicate hasNameAndArity(string name, int arity) { - super.isOverloaded(_, name, _) and - arity = super.getNumberOfOperands() - 1 + this.isOverloaded(_, name, _) and + arity = this.getNumberOfOperands() } - override Expr getArg(ArgumentPosition pos) { - pos.isSelf() and - result = super.getOperand(0) - or - result = super.getOperand(pos.asPosition() + 1) + override predicate hasReceiver() { any() } + + override Expr getNonReturnNodeAt(FunctionPosition pos) { + result = this.getOperand(pos.asPosition()) } - private predicate implicitBorrowAt(ArgumentPosition pos, boolean isMutable) { - exists(int borrows | super.isOverloaded(_, _, borrows) | - pos.isSelf() and + private predicate implicitBorrowAt(FunctionPosition pos, boolean isMutable) { + exists(int borrows | this.isOverloaded(_, _, borrows) | + pos.asPosition() = 0 and borrows >= 1 and if this instanceof CompoundAssignmentExpr then isMutable = true else isMutable = false or - pos.asPosition() = 0 and + pos.asPosition() = 1 and borrows = 2 and isMutable = false ) } - override Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { + override Type getTypeAt(FunctionPosition pos, TypePath path) { exists(boolean isMutable, RefType rt | this.implicitBorrowAt(pos, isMutable) and rt = getRefType(isMutable) @@ -2068,21 +2056,21 @@ private module MethodResolution { path.isEmpty() or exists(TypePath path0 | - result = inferType(this.getArg(pos), path0) and + result = inferType(this.getNodeAt(pos), path0) and path = TypePath::cons(rt.getPositionalTypeParameter(0), path0) ) ) or not this.implicitBorrowAt(pos, _) and - result = inferType(this.getArg(pos), path) + result = inferType(this.getNodeAt(pos), path) } override predicate argumentHasImplicitDerefChainBorrow( Expr arg, DerefChain derefChain, BorrowKind borrow ) { - exists(ArgumentPosition apos, boolean isMutable | - this.implicitBorrowAt(apos, isMutable) and - arg = this.getArg(apos) and + exists(FunctionPosition pos, boolean isMutable | + this.implicitBorrowAt(pos, isMutable) and + arg = this.getNodeAt(pos) and derefChain = DerefChain::nil() and borrow = TSomeBorrowKind(isMutable) ) @@ -2090,164 +2078,382 @@ private module MethodResolution { override predicate supportsAutoDerefAndBorrow() { none() } - override Trait getTrait() { super.isOverloaded(result, _, _) } - } - - pragma[nomagic] - private Method getMethodSuccessor(ImplOrTraitItemNode i, string name, int arity) { - result = i.getASuccessor(name) and - arity = result.getParamList().getNumberOfParams() + override Trait getTrait() { this.isOverloaded(result, _, _) } } - private newtype TMethodCallCand = - MkMethodCallCand( - MethodCall mc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow - ) { - exists(mc.getACandidateReceiverTypeAt(selfPos, derefChain, borrow, _)) + private class DynamicAssocFunctionCall extends AssocFunctionCall instanceof CallExprImpl::DynamicCallExpr + { + pragma[nomagic] + override predicate hasNameAndArity(string name, int arity) { + name = "call_once" and // todo: handle call_mut and call + arity = 2 // args are passed in a tuple } - /** A method call with a dereference chain and a potential borrow. */ - private class MethodCallCand extends MkMethodCallCand { - MethodCall mc_; - FunctionPosition selfPos; - DerefChain derefChain; - BorrowKind borrow; + override predicate hasReceiver() { any() } - MethodCallCand() { this = MkMethodCallCand(mc_, selfPos, derefChain, borrow) } + override AstNode getNonReturnNodeAt(FunctionPosition pos) { + pos.asPosition() = 0 and + result = super.getFunction() + or + pos.asPosition() = 1 and + result = super.getArgList() + } - MethodCall getMethodCall() { result = mc_ } + override predicate supportsAutoDerefAndBorrow() { any() } - Type getTypeAt(TypePath path) { + override Trait getTrait() { result instanceof AnyFnTrait } + } + + /** + * Provides logic for efficiently checking that there are no compatible call + * targets for a given candidate receiver type. + * + * For calls with non-blanket target candidates, we need to check: + * + * ```text + * forall types `t` where `t` is a lookup type for the given candidate receiver type: + * forall non-blanket candidates `c` matching `t`: + * check that `c` is not a compatible target + * ``` + * + * Instead of implementing the above using `forall`, we apply the standard trick + * of using ranked recursion. + */ + private module NoCompatibleTarget { + private import codeql.rust.elements.internal.generated.Raw + private import codeql.rust.elements.internal.generated.Synth + + private class RawImplOrTrait = @impl or @trait; + + private predicate id(RawImplOrTrait x, RawImplOrTrait y) { x = y } + + private predicate idOfRaw(RawImplOrTrait x, int y) = equivalenceRelation(id/2)(x, y) + + private int idOfImplOrTraitItemNode(ImplOrTraitItemNode i) { + idOfRaw(Synth::convertAstNodeToRaw(i), result) + } + + /** + * Holds if `t` is the `n`th lookup type for the candidate receiver type + * represented by `derefChain` and `borrow` at function-call adjusted position + * `selfPos` of `afc`. + * + * There are no compatible non-blanket-like candidates for lookup types `0` to `n - 1`. + */ + pragma[nomagic] + private predicate noCompatibleNonBlanketLikeTargetCandNthLookupType( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, + TypePath strippedTypePath, Type strippedType, int n, Type t + ) { + ( + ( + ( + afc.supportsAutoDerefAndBorrow() and + afc.hasReceiverAtPos(selfPos) + or + // needed for the `hasNoCompatibleNonBlanketTarget` check in + // `ArgSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` + exists(ImplItemNode i | + derefChain.isEmpty() and + blanketLikeCandidate(afc, _, selfPos, i, _, _, _) and + i.isBlanketImplementation() + ) + ) and + borrow.isNoBorrow() + or + afc.hasImplicitBorrowCand(selfPos, derefChain, borrow) + ) and + strippedType = afc.getComplexStrippedSelfType(selfPos, derefChain, borrow, strippedTypePath) and + n = 0 + or + hasNoCompatibleNonBlanketLikeTargetForNthLookupType(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n - 1) + ) and + t = getNthLookupType(afc, strippedType, n) + } + + pragma[nomagic] + private ImplOrTraitItemNode getKthNonBlanketLikeCandidateForNthLookupType( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, + TypePath strippedTypePath, Type strippedType, int n, Type t, int k + ) { + noCompatibleNonBlanketLikeTargetCandNthLookupType(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n, t) and result = - substituteLookupTraits(mc_.getANonPseudoCandidateReceiverTypeAt(selfPos, derefChain, borrow, - path)) + rank[k + 1](ImplOrTraitItemNode i, int id | + nonBlanketLikeCandidate(afc, _, selfPos, i, _, strippedTypePath, t) and + id = idOfImplOrTraitItemNode(i) + | + i order by id + ) + } + + pragma[nomagic] + private int getLastNonBlanketLikeCandidateForNthLookupType( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, + TypePath strippedTypePath, Type strippedType, int n + ) { + exists(Type t | + noCompatibleNonBlanketLikeTargetCandNthLookupType(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n, t) and + result = + count(ImplOrTraitItemNode i | + nonBlanketLikeCandidate(afc, _, selfPos, i, _, strippedTypePath, t) + ) - 1 + ) + } + + pragma[nomagic] + private predicate hasNoCompatibleNonBlanketLikeTargetForNthLookupTypeToIndex( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, + TypePath strippedTypePath, Type strippedType, int n, int k + ) { + exists(Type t | + noCompatibleNonBlanketLikeTargetCandNthLookupType(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n, t) + | + k = -1 + or + hasNoCompatibleNonBlanketLikeTargetForNthLookupTypeToIndex(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n, k - 1) and + exists(ImplOrTraitItemNode i | + i = + getKthNonBlanketLikeCandidateForNthLookupType(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n, t, k) and + afc.hasIncompatibleTarget(i, selfPos, derefChain, borrow, t) + ) + ) + } + + pragma[nomagic] + private predicate hasNoCompatibleNonBlanketLikeTargetForNthLookupType( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, + TypePath strippedTypePath, Type strippedType, int n + ) { + exists(int last | + last = + getLastNonBlanketLikeCandidateForNthLookupType(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n) and + hasNoCompatibleNonBlanketLikeTargetForNthLookupTypeToIndex(afc, selfPos, derefChain, borrow, + strippedTypePath, strippedType, n, last) + ) + } + + pragma[nomagic] + private predicate hasNoCompatibleNonBlanketLikeTarget( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow + ) { + exists(Type strippedType | + hasNoCompatibleNonBlanketLikeTargetForNthLookupType(afc, selfPos, derefChain, borrow, _, + strippedType, getLastLookupTypeIndex(afc, strippedType)) + ) + } + + pragma[nomagic] + predicate hasNoCompatibleTarget( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow + ) { + hasNoCompatibleNonBlanketLikeTarget(afc, selfPos, derefChain, borrow) and + // todo: replace with ranked recursion if needed + forall(ImplItemNode i | blanketLikeCandidate(afc, _, selfPos, i, _, _, _) | + afc.hasIncompatibleBlanketLikeTarget(i, selfPos, derefChain, borrow) + ) + } + + pragma[nomagic] + predicate hasNoCompatibleNonBlanketTarget( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow + ) { + hasNoCompatibleNonBlanketLikeTarget(afc, selfPos, derefChain, borrow) and + // todo: replace with ranked recursion if needed + forall(ImplItemNode i | + blanketLikeCandidate(afc, _, selfPos, i, _, _, _) and + not i.isBlanketImplementation() + | + afc.hasIncompatibleBlanketLikeTarget(i, selfPos, derefChain, borrow) + ) + } + } + + pragma[nomagic] + private AssocFunctionDeclaration getAssocFunctionSuccessor( + ImplOrTraitItemNode i, string name, int arity + ) { + result = i.getASuccessor(name) and + arity = result.getNumberOfParamsInclSelf() + } + + private newtype TAssocFunctionCallCand = + MkAssocFunctionCallCand( + AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow + ) { + exists(afc.getANonPseudoSelfTypeAt(selfPos, derefChain, borrow, _)) + } + + /** A call with a dereference chain and a potential borrow at a given position. */ + final private class AssocFunctionCallCand extends MkAssocFunctionCallCand { + AssocFunctionCall afc_; + FunctionPosition selfPos_; + DerefChain derefChain; + BorrowKind borrow; + + AssocFunctionCallCand() { this = MkAssocFunctionCallCand(afc_, selfPos_, derefChain, borrow) } + + AssocFunctionCall getAssocFunctionCall() { result = afc_ } + + ItemNode getEnclosingItemNode() { result.getADescendant() = afc_ } + + Type getTypeAt(TypePath path) { + result = + substituteLookupTraits(afc_, + afc_.getANonPseudoSelfTypeAt(selfPos_, derefChain, borrow, path)) } pragma[nomagic] predicate hasNoCompatibleNonBlanketTarget() { - mc_.hasNoCompatibleNonBlanketTargetSharedBorrow(selfPos, derefChain) and - borrow.isSharedBorrow() - or - mc_.hasNoCompatibleNonBlanketTargetMutBorrow(selfPos, derefChain) and - borrow.isMutableBorrow() - or - mc_.hasNoCompatibleNonBlanketTargetNoBorrow(selfPos, derefChain) and - borrow.isNoBorrow() + afc_.hasNoCompatibleNonBlanketTarget(selfPos_, derefChain, borrow) } pragma[nomagic] predicate hasSignature( - MethodCall mc, FunctionPosition selfPos_, TypePath strippedTypePath, Type strippedType, + AssocFunctionCall afc, FunctionPosition selfPos, TypePath strippedTypePath, Type strippedType, string name, int arity ) { strippedType = this.getTypeAt(strippedTypePath) and - isComplexRootStripped(strippedTypePath, strippedType) and - mc = mc_ and - mc.hasNameAndArity(name, arity) and + ( + isComplexRootStripped(strippedTypePath, strippedType) + or + selfPos_.isTypeQualifier() and strippedTypePath.isEmpty() + ) and + afc = afc_ and + afc.hasNameAndArity(name, arity) and selfPos = selfPos_ } /** - * Holds if the inherent method inside `impl` with matching name and arity can be + * Holds if the inherent function inside `impl` with matching name and arity can be * ruled out as a candidate for this call. */ pragma[nomagic] private predicate hasIncompatibleInherentTarget(Impl impl) { - ReceiverIsNotInstantiationOfInherentSelfParam::argIsNotInstantiationOf(this, impl, _, _) + SelfArgIsNotInstantiationOfInherent::argIsNotInstantiationOf(this, impl, _, _) } - /** - * Holds if this method call has no inherent target, i.e., it does not - * resolve to a method in an `impl` block for the type of the receiver. - */ pragma[nomagic] - predicate hasNoInherentTarget() { - mc_.hasTrait() - or - exists(TypePath strippedTypePath, Type strippedType, string name, int arity | - this.hasSignature(_, selfPos, strippedTypePath, strippedType, name, arity) and + predicate hasNoInherentTargetCheck() { + exists( + TypePath strippedTypePath, Type strippedType, string name, int arity, + TypeOption typeQualifier, TypeOption traitQualifier, boolean hasReceiver, + boolean targetMustBeMethod + | + // Calls to inherent functions are always of the form `x.m(...)` or `Foo::bar(...)`, + // where `Foo` is a type. In case `bar` is a method, we can use both the type qualifier + // and the type of the first argument to rule out candidates + selfPos_.isTypeQualifier() and targetMustBeMethod = false + or + selfPos_.asPosition() = 0 and targetMustBeMethod = true + | + afc_.hasSyntacticInfo(name, arity, typeQualifier, traitQualifier, hasReceiver) and + (if hasReceiver = true then targetMustBeMethod = true else any()) and + this.hasSignature(_, selfPos_, strippedTypePath, strippedType, name, arity) and forall(Impl i | - methodInfoNonBlanket(_, name, arity, selfPos, i, _, strippedTypePath, strippedType) and - not i.hasTrait() + i.isInherent() and + ( + assocFunctionInfoNonBlanketLikeCheck(_, name, arity, selfPos_, i, _, strippedTypePath, + strippedType, typeQualifier, traitQualifier, targetMustBeMethod) + or + assocFunctionInfoNonBlanketLikeTypeParamCheck(_, name, arity, selfPos_, i, _, + strippedTypePath, typeQualifier, traitQualifier, targetMustBeMethod) + ) | this.hasIncompatibleInherentTarget(i) ) ) } + /** + * Holds if this function call has no inherent target, i.e., it does not + * resolve to a function in an `impl` block for the type of the receiver. + */ pragma[nomagic] - private predicate argIsInstantiationOf(ImplOrTraitItemNode i, string name, int arity) { - ReceiverIsInstantiationOfSelfParam::argIsInstantiationOf(this, i, _) and - mc_.hasNameAndArity(name, arity) + predicate hasNoInherentTarget() { + afc_.hasTrait() + or + afc_.hasNoInherentTarget(selfPos_, derefChain, borrow) + } + + pragma[nomagic] + private predicate selfArgIsInstantiationOf(ImplOrTraitItemNode i, string name, int arity) { + SelfArgIsInstantiationOf::argIsInstantiationOf(this, i, _) and + afc_.hasNameAndArity(name, arity) } pragma[nomagic] - Method resolveCallTargetCand(ImplOrTraitItemNode i) { + AssocFunctionDeclaration resolveCallTargetCand(ImplOrTraitItemNode i) { exists(string name, int arity | - this.argIsInstantiationOf(i, name, arity) and - result = getMethodSuccessor(i, name, arity) + this.selfArgIsInstantiationOf(i, name, arity) and + result = getAssocFunctionSuccessor(i, name, arity) ) } - /** Gets a method that matches this method call. */ + /** Gets the associated function targeted by this call, if any. */ pragma[nomagic] - Method resolveCallTarget(ImplOrTraitItemNode i) { + AssocFunctionDeclaration resolveCallTarget(ImplOrTraitItemNode i) { result = this.resolveCallTargetCand(i) and not FunctionOverloading::functionResolutionDependsOnArgument(i, result, _, _) or - MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) + OverloadedCallArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) } string toString() { - result = mc_.toString() + " [" + derefChain.toString() + "; " + borrow + "]" + result = afc_ + " at " + selfPos_ + " [" + derefChain.toString() + "; " + borrow + "]" } - Location getLocation() { result = mc_.getLocation() } + Location getLocation() { result = afc_.getLocation() } } /** * Provides logic for resolving implicit `Deref::deref` calls. */ private module ImplicitDeref { - private newtype TMethodCallDerefCand = - MkMethodCallDerefCand(MethodCall mc, FunctionPosition selfPos, DerefChain derefChain) { - mc.supportsAutoDerefAndBorrow() and - mc.hasNoCompatibleTargetMutBorrow(selfPos, derefChain) and - exists(mc.getACandidateReceiverTypeAtNoBorrow(selfPos, derefChain, TypePath::nil())) + private newtype TCallDerefCand = + MkCallDerefCand(AssocFunctionCall afc, FunctionPosition selfPos, DerefChain derefChain) { + afc.supportsAutoDerefAndBorrow() and + afc.hasReceiverAtPos(selfPos) and + afc.hasNoCompatibleTarget(selfPos, derefChain, TSomeBorrowKind(true)) and + exists(afc.getSelfTypeAtNoBorrow(selfPos, derefChain, TypePath::nil())) } - /** A method call with a dereference chain. */ - private class MethodCallDerefCand extends MkMethodCallDerefCand { - MethodCall mc; + /** A call with a dereference chain. */ + private class CallDerefCand extends MkCallDerefCand { + AssocFunctionCall afc; FunctionPosition selfPos; DerefChain derefChain; - MethodCallDerefCand() { this = MkMethodCallDerefCand(mc, selfPos, derefChain) } + CallDerefCand() { this = MkCallDerefCand(afc, selfPos, derefChain) } Type getTypeAt(TypePath path) { - result = - substituteLookupTraits(mc.getACandidateReceiverTypeAtNoBorrow(selfPos, derefChain, path)) and + result = substituteLookupTraits(afc, afc.getSelfTypeAtNoBorrow(selfPos, derefChain, path)) and result != TNeverType() and result != TUnknownType() } - string toString() { result = mc.toString() + " [" + derefChain.toString() + "]" } + string toString() { result = afc + " [" + derefChain.toString() + "]" } - Location getLocation() { result = mc.getLocation() } + Location getLocation() { result = afc.getLocation() } } - private module MethodCallSatisfiesDerefConstraintInput implements - SatisfiesConstraintInputSig + private module CallSatisfiesDerefConstraintInput implements SatisfiesTypeInputSig { pragma[nomagic] - predicate relevantConstraint(MethodCallDerefCand mc, Type constraint) { + predicate relevantConstraint(CallDerefCand mc, Type constraint) { exists(mc) and constraint.(TraitType).getTrait() instanceof DerefTrait } } - private module MethodCallSatisfiesDerefConstraint = - SatisfiesConstraint; + private module CallSatisfiesDerefConstraint = + SatisfiesType; pragma[nomagic] private AssociatedTypeTypeParameter getDerefTargetTypeParameter() { @@ -2255,156 +2461,181 @@ private module MethodResolution { } /** - * Gets the type of the receiver of `mc` at `path` after applying the implicit + * Gets the type of the receiver of `afc` at `path` after applying the implicit * dereference inside `impl`, following the existing dereference chain `derefChain`. */ pragma[nomagic] Type getDereferencedCandidateReceiverType( - MethodCall mc, FunctionPosition selfPos, DerefImplItemNode impl, DerefChain derefChain, - TypePath path + AssocFunctionCall afc, FunctionPosition selfPos, DerefImplItemNode impl, + DerefChain derefChain, TypePath path ) { - exists(MethodCallDerefCand mcc, TypePath exprPath | - mcc = MkMethodCallDerefCand(mc, selfPos, derefChain) and - MethodCallSatisfiesDerefConstraint::satisfiesConstraintTypeThrough(mcc, impl, _, exprPath, - result) and + exists(CallDerefCand cdc, TypePath exprPath | + cdc = MkCallDerefCand(afc, selfPos, derefChain) and + CallSatisfiesDerefConstraint::satisfiesConstraintThrough(cdc, impl, _, exprPath, result) and exprPath.isCons(getDerefTargetTypeParameter(), path) ) } } - private module ReceiverSatisfiesBlanketLikeConstraintInput implements - BlanketImplementation::SatisfiesBlanketConstraintInputSig + private module ArgSatisfiesBlanketLikeConstraintInput implements + BlanketImplementation::SatisfiesBlanketConstraintInputSig { pragma[nomagic] predicate hasBlanketCandidate( - MethodCallCand mcc, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam + AssocFunctionCallCand afcc, ImplItemNode impl, TypePath blanketPath, + TypeParam blanketTypeParam ) { - exists(MethodCall mc, FunctionPosition selfPos, BorrowKind borrow | - mcc = MkMethodCallCand(mc, selfPos, _, borrow) and - methodCallBlanketLikeCandidate(mc, _, selfPos, impl, _, blanketPath, blanketTypeParam) and + exists(AssocFunctionCall afc, FunctionPosition selfPos, BorrowKind borrow | + afcc = MkAssocFunctionCallCand(afc, selfPos, _, borrow) and + blanketLikeCandidate(afc, _, selfPos, impl, _, blanketPath, blanketTypeParam) and // Only apply blanket implementations when no other implementations are possible; // this is to account for codebases that use the (unstable) specialization feature // (https://rust-lang.github.io/rfcs/1210-impl-specialization.html), as well as // cases where our blanket implementation filtering is not precise enough. - (mcc.hasNoCompatibleNonBlanketTarget() or not impl.isBlanketImplementation()) - | - borrow.isNoBorrow() - or - blanketPath.getHead() = borrow.getRefType().getPositionalTypeParameter(0) + if impl.isBlanketImplementation() then afcc.hasNoCompatibleNonBlanketTarget() else any() ) } } - private module ReceiverSatisfiesBlanketLikeConstraint = - BlanketImplementation::SatisfiesBlanketConstraint; + private module ArgSatisfiesBlanketLikeConstraint = + BlanketImplementation::SatisfiesBlanketConstraint; /** - * A configuration for matching the type of a receiver against the type of - * a `self` parameter. + * A configuration for matching the type of an argument against the type of + * a function at a function-call adjusted position relevant for dispatch + * (such as a `self` parameter). */ - private module ReceiverIsInstantiationOfSelfParamInput implements - IsInstantiationOfInputSig + private module SelfArgIsInstantiationOfInput implements + IsInstantiationOfInputSig { pragma[nomagic] additional predicate potentialInstantiationOf0( - MethodCallCand mcc, ImplOrTraitItemNode i, AssocFunctionType selfType + AssocFunctionCallCand afcc, ImplOrTraitItemNode i, AssocFunctionType selfType ) { exists( - MethodCall mc, FunctionPosition selfPos, Method m, TypePath strippedTypePath, + AssocFunctionCall afc, FunctionPosition selfPos, Function f, TypePath strippedTypePath, Type strippedType | - mcc.hasSignature(mc, selfPos, strippedTypePath, strippedType, _, _) + afcc.hasSignature(afc, selfPos, strippedTypePath, strippedType, _, _) | - methodCallNonBlanketCandidate(mc, m, selfPos, i, selfType, strippedTypePath, strippedType) + nonBlanketLikeCandidate(afc, f, selfPos, i, selfType, strippedTypePath, strippedType) or - methodCallBlanketLikeCandidate(mc, m, selfPos, i, selfType, _, _) and - ReceiverSatisfiesBlanketLikeConstraint::satisfiesBlanketConstraint(mcc, i) + blanketLikeCandidate(afc, f, selfPos, i, selfType, _, _) and + ArgSatisfiesBlanketLikeConstraint::satisfiesBlanketConstraint(afcc, i) ) } pragma[nomagic] predicate potentialInstantiationOf( - MethodCallCand mcc, TypeAbstraction abs, AssocFunctionType constraint + AssocFunctionCallCand afcc, TypeAbstraction abs, AssocFunctionType constraint ) { - potentialInstantiationOf0(mcc, abs, constraint) and + potentialInstantiationOf0(afcc, abs, constraint) and if abs.(Impl).hasTrait() then - // inherent methods take precedence over trait methods, so only allow - // trait methods when there are no matching inherent methods - mcc.hasNoInherentTarget() + // inherent functions take precedence over trait functions, so only allow + // trait functions when there are no matching inherent functions + afcc.hasNoInherentTarget() else any() } predicate relevantConstraint(AssocFunctionType constraint) { - methodInfo(_, _, _, _, _, constraint, _, _) + assocFunctionInfo(_, _, _, _, _, constraint, _, _, _, _, _) } } - private module ReceiverIsInstantiationOfSelfParam = - ArgIsInstantiationOf; + private module SelfArgIsInstantiationOf { + import ArgIsInstantiationOf + + pragma[nomagic] + predicate argIsNotInstantiationOf( + AssocFunctionCall afc, ImplOrTraitItemNode i, FunctionPosition selfPos, DerefChain derefChain, + BorrowKind borrow, AssocFunctionType selfType + ) { + exists(TypePath path | + argIsNotInstantiationOf(MkAssocFunctionCallCand(afc, selfPos, derefChain, borrow), i, + selfType, path) and + not path.isEmpty() + ) + } + + pragma[nomagic] + predicate argIsInstantiationOf( + AssocFunctionCall afc, ImplOrTraitItemNode i, FunctionPosition selfPos, DerefChain derefChain, + BorrowKind borrow, AssocFunctionType selfType + ) { + argIsInstantiationOf(MkAssocFunctionCallCand(afc, selfPos, derefChain, borrow), i, selfType) + } + } /** - * A configuration for anti-matching the type of a receiver against the type of - * a `self` parameter belonging to a blanket (like) implementation. + * A configuration for anti-matching the type of an argument against the type of + * a function at a function-call adjusted position relevant for dispatch + * (such as a `self` parameter) in a blanket (like) implementation. */ - private module ReceiverIsNotInstantiationOfBlanketLikeSelfParamInput implements - IsInstantiationOfInputSig + private module SelfArgIsNotInstantiationOfBlanketLikeInput implements + IsInstantiationOfInputSig { pragma[nomagic] predicate potentialInstantiationOf( - MethodCallCand mcc, TypeAbstraction abs, AssocFunctionType constraint + AssocFunctionCallCand afcc, TypeAbstraction abs, AssocFunctionType constraint ) { - exists(MethodCall mc, FunctionPosition selfPos | - mcc = MkMethodCallCand(mc, selfPos, _, _) and - methodCallBlanketLikeCandidate(mc, _, selfPos, abs, constraint, _, _) and + exists(AssocFunctionCall afc, FunctionPosition selfPos | + afcc = MkAssocFunctionCallCand(afc, selfPos, _, _) and + blanketLikeCandidate(afc, _, selfPos, abs, constraint, _, _) and if abs.(Impl).hasTrait() then - // inherent methods take precedence over trait methods, so only allow - // trait methods when there are no matching inherent methods - mcc.hasNoInherentTarget() + // inherent functions take precedence over trait functions, so only allow + // trait functions when there are no matching inherent functions + afcc.hasNoInherentTarget() else any() ) } } - private module ReceiverIsNotInstantiationOfBlanketLikeSelfParam = - ArgIsInstantiationOf; + private module SelfArgIsNotInstantiationOfBlanketLike = + ArgIsInstantiationOf; /** - * A configuration for anti-matching the type of a receiver against the type of - * a `self` parameter in an inherent method. + * A configuration for anti-matching the type of an argument against the type of + * a function at a function-call adjusted position relevant for dispatch (such as + * a `self` parameter) in an inherent function. */ - private module ReceiverIsNotInstantiationOfInherentSelfParamInput implements - IsInstantiationOfInputSig + private module SelfArgIsNotInstantiationOfInherentInput implements + IsInstantiationOfInputSig { pragma[nomagic] predicate potentialInstantiationOf( - MethodCallCand mcc, TypeAbstraction abs, AssocFunctionType constraint + AssocFunctionCallCand afcc, TypeAbstraction abs, AssocFunctionType constraint ) { - ReceiverIsInstantiationOfSelfParamInput::potentialInstantiationOf0(mcc, abs, constraint) and - abs = any(Impl i | not i.hasTrait()) + SelfArgIsInstantiationOfInput::potentialInstantiationOf0(afcc, abs, constraint) and + abs.(Impl).isInherent() and + exists(AssocFunctionCall afc, FunctionPosition selfPos | + afcc = MkAssocFunctionCallCand(afc, selfPos, _, _) + | + selfPos.isTypeQualifier() or + afc.hasReceiverAtPos(selfPos) + ) } } - private module ReceiverIsNotInstantiationOfInherentSelfParam = - ArgIsInstantiationOf; + private module SelfArgIsNotInstantiationOfInherent = + ArgIsInstantiationOf; /** * A configuration for matching the types of positional arguments against the * types of parameters, when needed to disambiguate the call. */ - private module MethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { + private module OverloadedCallArgsAreInstantiationsOfInput implements + ArgsAreInstantiationsOfInputSig + { predicate toCheck(ImplOrTraitItemNode i, Function f, TypeParameter traitTp, FunctionPosition pos) { FunctionOverloading::functionResolutionDependsOnArgument(i, f, traitTp, pos) } - class Call extends MethodCallCand { + class Call extends AssocFunctionCallCand { Type getArgType(FunctionPosition pos, TypePath path) { - result = mc_.getArgumentTypeAt(pos.asArgumentPosition(), path) - or - pos.isReturn() and - result = inferType(mc_.getNodeAt(pos), path) + result = this.getAssocFunctionCall().getTypeAt(pos, path) } predicate hasTargetCand(ImplOrTraitItemNode i, Function f) { @@ -2413,50 +2644,74 @@ private module MethodResolution { } } - private module MethodArgsAreInstantiationsOf = - ArgsAreInstantiationsOf; + private module OverloadedCallArgsAreInstantiationsOf { + import ArgsAreInstantiationsOf + + pragma[nomagic] + predicate argsAreNotInstantiationsOf(AssocFunctionCall afc, ImplOrTraitItemNode i) { + argsAreNotInstantiationsOf(MkAssocFunctionCallCand(afc, _, _, _), i, _) + } + } } /** - * A matching configuration for resolving types of method call expressions - * like `foo.bar(baz)`. + * A matching configuration for resolving types of function call expressions + * like `foo.bar(baz)` and `Foo::bar(baz)`. */ -private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSig { +private module FunctionCallMatchingInput implements MatchingWithEnvironmentInputSig { import FunctionPositionMatchingInput - private class MethodDeclaration extends Method, FunctionDeclaration { } - private newtype TDeclaration = - TMethodFunctionDeclaration(ImplOrTraitItemNode i, MethodDeclaration m) { m.isAssoc(i) } + TFunctionDeclaration(ImplOrTraitItemNodeOption i, FunctionDeclaration f) { f.isFor(i) } - final class Declaration extends TMethodFunctionDeclaration { - ImplOrTraitItemNode parent; - ImplOrTraitItemNodeOption someParent; - MethodDeclaration m; + final class Declaration extends TFunctionDeclaration { + ImplOrTraitItemNodeOption i; + FunctionDeclaration f; - Declaration() { - this = TMethodFunctionDeclaration(parent, m) and - someParent.asSome() = parent - } + Declaration() { this = TFunctionDeclaration(i, f) } + + FunctionDeclaration getFunction() { result = f } - predicate isMethod(ImplOrTraitItemNode i, Method method) { - this = TMethodFunctionDeclaration(i, method) + predicate isAssocFunction(ImplOrTraitItemNode i_, Function f_) { + i_ = i.asSome() and + f_ = f } TypeParameter getTypeParameter(TypeParameterPosition ppos) { - result = m.getTypeParameter(someParent, ppos) + result = f.getTypeParameter(i, ppos) } - Type getDeclaredType(DeclarationPosition dpos, TypePath path) { - result = m.getParameterType(someParent, dpos, path) + Type getDeclaredType(FunctionPosition pos, TypePath path) { + result = f.getParameterType(i, pos, path) or - dpos.isReturn() and - result = m.getReturnType(someParent, path) + pos.isReturn() and + result = f.getReturnType(i, path) } - string toString() { result = m.toStringExt(parent) } + string toString() { + i.isNone() and result = f.toString() + or + result = f.toStringExt(i.asSome()) + } + + Location getLocation() { result = f.getLocation() } + } - Location getLocation() { result = m.getLocation() } + pragma[nomagic] + private TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp, Declaration decl) { + result = + tp.(TypeParamTypeParameter) + .getTypeParam() + .getAdditionalTypeBound(decl.getFunction(), _) + .getTypeRepr() + } + + bindingset[decl] + TypeMention getATypeParameterConstraint(TypeParameter tp, Declaration decl) { + result = Input2::getATypeParameterConstraint(tp) and + exists(decl) + or + result = getAdditionalTypeParameterConstraint(tp, decl) } class AccessEnvironment = string; @@ -2477,10 +2732,32 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi ) } - final private class MethodCallFinal = MethodResolution::MethodCall; + private string noDerefChainBorrow() { + exists(DerefChain derefChain, BorrowKind borrow | + derefChain.isEmpty() and + borrow.isNoBorrow() and + result = encodeDerefChainBorrow(derefChain, borrow) + ) + } + + abstract class Access extends ContextTyping::ContextTypedCallCand { + abstract AstNode getNodeAt(FunctionPosition pos); - class Access extends MethodCallFinal, ContextTyping::ContextTypedCallCand { - Access() { + bindingset[derefChainBorrow] + abstract Type getInferredType(string derefChainBorrow, FunctionPosition pos, TypePath path); + + abstract Declaration getTarget(string derefChainBorrow); + + /** + * 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); + } + + private class AssocFunctionCallAccess extends Access instanceof AssocFunctionResolution::AssocFunctionCall + { + AssocFunctionCallAccess() { // handled in the `OperationMatchingInput` module not this instanceof Operation } @@ -2497,99 +2774,161 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi result = getCallExprTypeArgument(this, apos, path) } + override AstNode getNodeAt(FunctionPosition pos) { + result = AssocFunctionResolution::AssocFunctionCall.super.getNodeAt(pos) + } + pragma[nomagic] - private Type getInferredSelfType(AccessPosition apos, string derefChainBorrow, TypePath path) { + private Type getInferredSelfType(FunctionPosition pos, string derefChainBorrow, TypePath path) { exists(DerefChain derefChain, BorrowKind borrow | - result = this.getACandidateReceiverTypeAt(apos, derefChain, borrow, path) and - derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) + result = super.getSelfTypeAt(pos, derefChain, borrow, path) and + derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and + super.hasReceiverAtPos(pos) ) } pragma[nomagic] - Type getInferredNonSelfType(AccessPosition apos, TypePath path) { + 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 - apos.isReturn() and + pos.isReturn() and this instanceof IndexExpr then path.isEmpty() and result instanceof RefType or exists(TypePath suffix | - result = inferType(this.getNodeAt(apos), suffix) and + result = super.getTypeAt(pos, suffix) and path = TypePath::cons(getRefTypeParameter(_), suffix) ) else ( - not apos.isSelf() and - result = inferType(this.getNodeAt(apos), path) + not super.hasReceiverAtPos(pos) and + result = super.getTypeAt(pos, path) ) } bindingset[derefChainBorrow] - Type getInferredType(string derefChainBorrow, AccessPosition apos, TypePath path) { - result = this.getInferredSelfType(apos, derefChainBorrow, path) + override Type getInferredType(string derefChainBorrow, FunctionPosition pos, TypePath path) { + result = this.getInferredSelfType(pos, derefChainBorrow, path) or - result = this.getInferredNonSelfType(apos, path) + result = this.getInferredNonSelfType(pos, path) } - Method getTarget(ImplOrTraitItemNode i, string derefChainBorrow) { + private AssocFunctionDeclaration getTarget(ImplOrTraitItemNode i, string derefChainBorrow) { exists(DerefChain derefChain, BorrowKind borrow | derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and - result = this.resolveCallTarget(i, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa + result = super.resolveCallTarget(i, _, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa ) } - Declaration getTarget(string derefChainBorrow) { - exists(ImplOrTraitItemNode i, Method m | - m = this.getTarget(i, derefChainBorrow) and - result = TMethodFunctionDeclaration(i, m) - ) + override Declaration getTarget(string derefChainBorrow) { + exists(ImplOrTraitItemNode i | result.isAssocFunction(i, this.getTarget(i, derefChainBorrow))) } - /** - * Holds if the return type of this call at `path` may have to be inferred - * from the context. - */ pragma[nomagic] - predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { + override predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { exists(ImplOrTraitItemNode i | this.hasUnknownTypeAt(i, this.getTarget(i, derefChainBorrow), pos, path) ) + or + derefChainBorrow = noDerefChainBorrow() and + forex(ImplOrTraitItemNode i, Function f | + f = CallExprImpl::getResolvedFunction(this) and + f = i.getAnAssocItem() + | + this.hasUnknownTypeAt(i, f, pos, path) + ) + } + } + + private class NonAssocFunctionCallAccess extends Access instanceof NonAssocCallExpr, + CallExprImpl::CallExprCall + { + pragma[nomagic] + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = NonAssocCallExpr.super.getTypeArgument(apos, path) + } + + override AstNode getNodeAt(FunctionPosition pos) { + result = NonAssocCallExpr.super.getNodeAt(pos) + } + + pragma[nomagic] + private Type getInferredType(FunctionPosition pos, TypePath path) { + result = super.getInferredType(pos, path) + } + + bindingset[derefChainBorrow] + override Type getInferredType(string derefChainBorrow, FunctionPosition pos, TypePath path) { + exists(derefChainBorrow) and + result = this.getInferredType(pos, path) + } + + pragma[nomagic] + private Declaration getTarget() { + result = + TFunctionDeclaration(ImplOrTraitItemNodeOption::none_(), + super.resolveCallTargetViaPathResolution()) + } + + override Declaration getTarget(string derefChainBorrow) { + result = this.getTarget() and + derefChainBorrow = noDerefChainBorrow() + } + + 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 + ) + ) } } } -private module MethodCallMatching = MatchingWithEnvironment; +private module FunctionCallMatching = MatchingWithEnvironment; pragma[nomagic] -private Type inferMethodCallType0( - MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, AstNode n, - string derefChainBorrow, TypePath path +private Type inferFunctionCallType0( + FunctionCallMatchingInput::Access call, FunctionPosition pos, AstNode n, DerefChain derefChain, + BorrowKind borrow, TypePath path ) { exists(TypePath path0 | - n = a.getNodeAt(apos) and - ( - result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) + n = call.getNodeAt(pos) and + exists(string derefChainBorrow | + FunctionCallMatchingInput::decodeDerefChainBorrow(derefChainBorrow, derefChain, borrow) + | + result = FunctionCallMatching::inferAccessType(call, derefChainBorrow, pos, path0) or - a.hasUnknownTypeAt(derefChainBorrow, apos, path0) and + call.hasUnknownTypeAt(derefChainBorrow, pos, path0) and result = TUnknownType() ) | if // index expression `x[i]` desugars to `*x.index(i)`, so we must account for // the implicit deref - apos.isReturn() and - a instanceof IndexExpr + pos.isReturn() and + call instanceof IndexExpr then path0.isCons(getRefTypeParameter(_), path) else path = path0 ) } pragma[nomagic] -private Type inferMethodCallTypeNonSelf(AstNode n, FunctionPosition pos, TypePath path) { - result = inferMethodCallType0(_, pos, n, _, path) and - not pos.isSelf() +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) + ) } /** @@ -2600,14 +2939,12 @@ private Type inferMethodCallTypeNonSelf(AstNode n, FunctionPosition pos, TypePat * empty, at which point the inferred type can be applied back to `n`. */ pragma[nomagic] -private Type inferMethodCallTypeSelf(MethodCall mc, AstNode n, DerefChain derefChain, TypePath path) { - exists( - MethodCallMatchingInput::AccessPosition apos, string derefChainBorrow, BorrowKind borrow, - TypePath path0 - | - result = inferMethodCallType0(mc, apos, n, derefChainBorrow, path0) and - apos.isSelf() and - MethodCallMatchingInput::decodeDerefChainBorrow(derefChainBorrow, derefChain, borrow) +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 @@ -2621,474 +2958,59 @@ private Type inferMethodCallTypeSelf(MethodCall mc, AstNode n, DerefChain derefC or // adjust for implicit deref exists( - DerefChain derefChain0, Type t0, TypePath path0, DerefImplItemNode impl, Type selfParamType, - TypePath selfPath - | - t0 = inferMethodCallTypeSelf(mc, n, 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) - ) - ) -} - -private Type inferMethodCallTypePreCheck(AstNode n, FunctionPosition pos, TypePath path) { - result = inferMethodCallTypeNonSelf(n, pos, path) - or - exists(MethodCall mc | - result = inferMethodCallTypeSelf(mc, n, DerefChain::nil(), path) and - if mc instanceof CallExpr then pos.asPosition() = 0 else pos.isSelf() - ) -} - -/** - * Gets the type of `n` at `path`, where `n` is either a method call or an - * argument/receiver of a method call. - */ -private predicate inferMethodCallType = - ContextTyping::CheckContextTyping::check/2; - -/** - * Provides logic for resolving calls to non-method items. This includes - * "calls" to tuple variants and tuple structs. - */ -private module NonMethodResolution { - pragma[nomagic] - private predicate traitFunctionResolutionDependsOnArgument0( - TraitItemNode trait, NonMethodFunction traitFunction, FunctionPosition pos, ImplItemNode impl, - NonMethodFunction implFunction, TypePath path, TypeParameter traitTp - ) { - implFunction = impl.getAnAssocItem() and - implFunction.implements(traitFunction) and - FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos, path, traitTp) and - ( - traitTp = TSelfTypeParameter(trait) - or - FunctionOverloading::functionResolutionDependsOnArgument(impl, implFunction, traitTp, pos) - ) - } - - /** - * Holds if resolving the function `implFunction` in `impl` requires inspecting - * the type of applied _arguments_ or possibly knowing the return type. - * - * `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 `path`). - * - * As for method resolution, we always check the type being implemented (corresponding - * to `traitTp` being the special `Self` type parameter). - */ - pragma[nomagic] - private predicate traitFunctionResolutionDependsOnArgument( - TraitItemNode trait, NonMethodFunction traitFunction, FunctionPosition pos, ImplItemNode impl, - NonMethodFunction implFunction, TypePath path, TypeParameter traitTp - ) { - traitFunctionResolutionDependsOnArgument0(trait, traitFunction, pos, impl, implFunction, path, - traitTp) and - // Exclude functions where we cannot resolve all relevant type mentions; this allows - // for blanket implementations to be applied in those cases - forall(TypeParameter traitTp0 | - traitFunctionResolutionDependsOnArgument0(trait, traitFunction, _, impl, implFunction, _, - traitTp0) - | - exists(FunctionPosition pos0, TypePath path0 | - traitFunctionResolutionDependsOnArgument0(trait, traitFunction, pos0, impl, implFunction, - path0, traitTp0) and - exists(getAssocFunctionTypeAt(implFunction, impl, pos0, path0)) - ) - ) - } - - /** - * Holds if `f` inside `i` either implements trait function `traitFunction` inside `trait` - * or is equal to `traitFunction`, and the type of `f` at `pos` and `path` is `t`, which - * corresponds to the `Self` type parameter of `trait`. - */ - pragma[nomagic] - private predicate traitFunctionHasSelfType( - TraitItemNode trait, NonMethodFunction traitFunction, FunctionPosition pos, TypePath path, - Type t, ImplOrTraitItemNode i, NonMethodFunction f - ) { - exists(ImplItemNode impl, NonMethodFunction implFunction, AssocFunctionType aft | - traitFunctionResolutionDependsOnArgument(trait, traitFunction, pos, impl, implFunction, path, - TSelfTypeParameter(trait)) and - aft.appliesTo(f, i, pos) and - t = aft.getTypeAt(path) - | - i = trait and - f = traitFunction - or - i = impl and - f = implFunction and - not BlanketImplementation::isBlanketLike(i, _, _) - ) - } - - pragma[nomagic] - private predicate functionResolutionDependsOnArgument( - ImplItemNode impl, NonMethodFunction f, FunctionPosition pos, TypeParameter tp - ) { - traitFunctionResolutionDependsOnArgument(_, _, pos, impl, f, _, tp) - or - // For inherent implementations of generic types, we also need to check the type being - // implemented. We arbitrarily choose the first type parameter of the type being implemented - // to represent this case. - f = impl.getAnAssocItem() and - not impl.(Impl).hasTrait() and - tp = TTypeParamTypeParameter(impl.resolveSelfTy().getTypeParam(0)) and - pos.isTypeQualifier() - } - - pragma[nomagic] - private predicate functionInfoBlanketLikeRelevantPos( - NonMethodFunction f, string name, int arity, ImplItemNode impl, Trait trait, - FunctionPosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam - ) { - functionInfoBlanketLike(f, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and - ( - if pos.isReturn() - then - // We only check that the context of the call provides relevant type information - // when no argument can - not exists(FunctionPosition pos0 | - functionInfoBlanketLike(f, name, arity, impl, trait, pos0, _, _, _) and - not pos0.isReturn() - ) - else any() - ) - } - - pragma[nomagic] - private predicate blanketLikeCallTraitCandidate(Element fc, Trait trait) { - fc = - any(NonMethodCall nmc | - exists(string name, int arity | - nmc.hasNameAndArity(name, arity) and - functionInfoBlanketLikeRelevantPos(_, name, arity, _, trait, _, _, _, _) - | - not nmc.hasTrait() - or - trait = nmc.getTrait() - ) - ) - } - - private module BlanketTraitIsVisible = TraitIsVisible; - - /** A (potential) non-method call, `f(x)`. */ - final class NonMethodCall extends CallExpr { - NonMethodCall() { - // even if a function cannot be resolved by path resolution, it may still - // be possible to resolve a blanket implementation (so not `forex`) - forall(Function f | f = CallExprImpl::getResolvedFunction(this) | - f instanceof NonMethodFunction - ) - } - - pragma[nomagic] - predicate hasNameAndArity(string name, int arity) { - name = CallExprImpl::getFunctionPath(this).getText() and - arity = this.getArgList().getNumberOfArgs() - } - - /** - * Gets the item that this function call resolves to using path resolution, - * if any. - */ - private ItemNode getPathResolutionResolved() { - result = CallExprImpl::getResolvedFunction(this) and - not result.(Function).hasSelfParam() - } - - /** - * Gets the associated function that this function call resolves to using path - * resolution, if any. - */ - pragma[nomagic] - NonMethodFunction getPathResolutionResolved(ImplOrTraitItemNode i) { - result = this.getPathResolutionResolved() and - result = i.getAnAssocItem() - } - - /** - * Gets the blanket function that this call may resolve to, if any. - */ - pragma[nomagic] - NonMethodFunction resolveCallTargetBlanketCand(ImplItemNode impl) { - exists(string name | - this.hasNameAndArity(pragma[only_bind_into](name), _) and - ArgIsInstantiationOfBlanketParam::argIsInstantiationOf(MkCallAndBlanketPos(this, _), impl, _) and - result = impl.getASuccessor(pragma[only_bind_into](name)) - ) - } - - /** Gets the trait targeted by this call, if any. */ - Trait getTrait() { result = getCallExprTraitQualifier(this) } - - /** Holds if this call targets a trait. */ - predicate hasTrait() { exists(this.getTrait()) } - - AstNode getNodeAt(FunctionPosition pos) { - result = this.getSyntacticArgument(pos.asArgumentPosition()) - or - result = this and pos.isReturn() - } - - Type getTypeAt(FunctionPosition pos, TypePath path) { - result = inferType(this.getNodeAt(pos), path) - } - - pragma[nomagic] - NonMethodFunction resolveCallTargetNonBlanketCand(ImplItemNode i) { - not this.hasTrait() and - result = this.getPathResolutionResolved(i) and - not exists(this.resolveCallTargetViaPathResolution()) and - functionResolutionDependsOnArgument(i, result, _, _) - } - - pragma[nomagic] - predicate resolveCallTargetBlanketLikeCand( - ImplItemNode impl, FunctionPosition pos, TypePath blanketPath, TypeParam blanketTypeParam - ) { - exists(string name, int arity, Trait trait, AssocFunctionType t | - this.hasNameAndArity(name, arity) and - exists(this.getTypeAt(pos, blanketPath)) and - functionInfoBlanketLikeRelevantPos(_, name, arity, impl, trait, pos, t, blanketPath, - blanketTypeParam) and - BlanketTraitIsVisible::traitIsVisible(this, trait) - | - not this.hasTrait() - or - trait = this.getTrait() - ) - } - - pragma[nomagic] - predicate hasTraitResolved(TraitItemNode trait, NonMethodFunction resolved) { - resolved = this.getPathResolutionResolved() and - trait = this.getTrait() - } - - /** - * Holds if this call has no compatible non-blanket target, and it has some - * candidate blanket target. - */ - pragma[nomagic] - predicate hasNoCompatibleNonBlanketTarget() { - this.resolveCallTargetBlanketLikeCand(_, _, _, _) and - not exists(this.resolveCallTargetViaPathResolution()) and - forall(ImplOrTraitItemNode i, Function f | f = this.resolveCallTargetNonBlanketCand(i) | - NonMethodArgsAreInstantiationsOfNonBlanket::argsAreNotInstantiationsOf(this, i, f) - ) and - ( - not this.hasTraitResolved(_, _) - or - exists( - TraitItemNode trait, NonMethodFunction resolved, FunctionPosition pos, TypePath path, - Type t - | - this.(NonMethodArgsAreInstantiationsOfNonBlanketInput::Call) - .hasTraitResolvedSelfType(trait, resolved, pos, path, t) - | - forall(ImplOrTraitItemNode i, Function f | - traitFunctionHasSelfType(trait, resolved, pos, path, t, i, f) - | - NonMethodArgsAreInstantiationsOfNonBlanket::argsAreNotInstantiationsOf(this, i, f) - ) - ) - ) - } - - /** - * Gets the target of this call, which can be resolved using only path resolution. - */ - pragma[nomagic] - ItemNode resolveCallTargetViaPathResolution() { - not this.hasTrait() and - result = this.getPathResolutionResolved() and - not functionResolutionDependsOnArgument(_, result, _, _) - } - - /** - * Gets the target of this call, which can be resolved using type inference. - */ - pragma[nomagic] - NonMethodFunction resolveCallTargetViaTypeInference(ImplOrTraitItemNode i) { - result = this.resolveCallTargetBlanketCand(i) and - not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _) - or - NonMethodArgsAreInstantiationsOfBlanket::argsAreInstantiationsOf(this, i, result) - or - NonMethodArgsAreInstantiationsOfNonBlanket::argsAreInstantiationsOf(this, i, result) - } - } - - private newtype TCallAndBlanketPos = - MkCallAndBlanketPos(NonMethodCall fc, FunctionPosition pos) { - fc.resolveCallTargetBlanketLikeCand(_, pos, _, _) - } - - /** A call tagged with a position. */ - private class CallAndBlanketPos extends MkCallAndBlanketPos { - NonMethodCall fc; - FunctionPosition pos; - - CallAndBlanketPos() { this = MkCallAndBlanketPos(fc, pos) } - - Location getLocation() { result = fc.getLocation() } - - Type getTypeAt(TypePath path) { result = fc.getTypeAt(pos, path) } - - string toString() { result = fc.toString() + " [arg " + pos + "]" } - } - - private module ArgSatisfiesBlanketConstraintInput implements - BlanketImplementation::SatisfiesBlanketConstraintInputSig - { - pragma[nomagic] - predicate hasBlanketCandidate( - CallAndBlanketPos fcp, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam - ) { - exists(NonMethodCall fc, FunctionPosition pos | - fcp = MkCallAndBlanketPos(fc, pos) and - fc.resolveCallTargetBlanketLikeCand(impl, pos, blanketPath, blanketTypeParam) and - // Only apply blanket implementations when no other implementations are possible; - // this is to account for codebases that use the (unstable) specialization feature - // (https://rust-lang.github.io/rfcs/1210-impl-specialization.html), as well as - // cases where our blanket implementation filtering is not precise enough. - (fc.hasNoCompatibleNonBlanketTarget() or not impl.isBlanketImplementation()) - ) - } - } - - private module ArgSatisfiesBlanketConstraint = - BlanketImplementation::SatisfiesBlanketConstraint; - - /** - * A configuration for matching the type of an argument against the type of - * a parameter that mentions a satisfied blanket type parameter. - */ - private module ArgIsInstantiationOfBlanketParamInput implements - IsInstantiationOfInputSig - { - pragma[nomagic] - predicate potentialInstantiationOf( - CallAndBlanketPos fcp, TypeAbstraction abs, AssocFunctionType constraint - ) { - exists(FunctionPosition pos | - ArgSatisfiesBlanketConstraint::satisfiesBlanketConstraint(fcp, abs) and - fcp = MkCallAndBlanketPos(_, pos) and - functionInfoBlanketLikeRelevantPos(_, _, _, abs, _, pos, constraint, _, _) - ) - } - - predicate relevantConstraint(AssocFunctionType constraint) { - functionInfoBlanketLikeRelevantPos(_, _, _, _, _, _, constraint, _, _) - } - } - - private module ArgIsInstantiationOfBlanketParam = - ArgIsInstantiationOf; - - private Type getArgType( - NonMethodCall call, FunctionPosition pos, TypePath path, boolean isDefaultTypeArg - ) { - result = inferType(call.getNodeAt(pos), path) and - isDefaultTypeArg = false - or - result = getCallExprTypeQualifier(call, path, isDefaultTypeArg) and - pos.isTypeQualifier() - } - - private module NonMethodArgsAreInstantiationsOfBlanketInput implements - ArgsAreInstantiationsOfInputSig - { - predicate toCheck(ImplOrTraitItemNode i, Function f, TypeParameter tp, FunctionPosition pos) { - functionResolutionDependsOnArgument(i, f, pos, tp) - } - - final class Call extends NonMethodCall { - Type getArgType(FunctionPosition pos, TypePath path) { - result = getArgType(this, pos, path, false) - } - - predicate hasTargetCand(ImplOrTraitItemNode i, Function f) { - f = this.resolveCallTargetBlanketCand(i) - } - } - } - - private module NonMethodArgsAreInstantiationsOfBlanket = - ArgsAreInstantiationsOf; - - private module NonMethodArgsAreInstantiationsOfNonBlanketInput implements - ArgsAreInstantiationsOfInputSig - { - predicate toCheck(ImplOrTraitItemNode i, Function f, TypeParameter traitTp, FunctionPosition pos) { - functionResolutionDependsOnArgument(i, f, pos, traitTp) - or - // Also match against the trait function itself - FunctionOverloading::traitTypeParameterOccurrence(i, f, _, pos, _, traitTp) and - traitTp = TSelfTypeParameter(i) - } - - class Call extends NonMethodCall { - Type getArgType(FunctionPosition pos, TypePath path) { - result = getArgType(this, pos, path, _) - } - - /** - * Holds if this call is of the form `Trait::function(args)`, and the type at `pos` and - * `path` matches the `Self` type parameter of `Trait`. - */ - pragma[nomagic] - predicate hasTraitResolvedSelfType( - TraitItemNode trait, NonMethodFunction function, FunctionPosition pos, TypePath path, Type t - ) { - this.hasTraitResolved(trait, function) and - FunctionOverloading::traitTypeParameterOccurrence(trait, function, _, pos, path, - TSelfTypeParameter(trait)) and - t = substituteLookupTraits(this.getArgType(pos, path)) and - t != TUnknownType() - } - - predicate hasTargetCand(ImplOrTraitItemNode i, Function f) { - f = this.resolveCallTargetNonBlanketCand(i) - or - exists( - TraitItemNode trait, NonMethodFunction resolved, FunctionPosition pos, TypePath path, - Type t - | - this.hasTraitResolvedSelfType(trait, resolved, pos, path, t) and - traitFunctionHasSelfType(trait, resolved, pos, path, t, i, f) - ) - } - } - } + 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 + or + exists(TypePath pathToTypeParam, TypePath suffix | + impl.targetHasTypeParameterAt(pathToTypeParam, selfParamType) and + path0 = pathToTypeParam.appendInverse(suffix) and + result = t0 and + path = selfPath.append(suffix) + ) + ) +} - private module NonMethodArgsAreInstantiationsOfNonBlanket = - ArgsAreInstantiationsOf; +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() + ) } -abstract private class TupleLikeConstructor extends Addressable { +/** + * Gets the type of `n` at `path`, where `n` is either a function call or an + * argument/receiver of a function call. + */ +private predicate inferFunctionCallType = + ContextTyping::CheckContextTyping::check/2; + +abstract private class Constructor extends Addressable { final TypeParameter getTypeParameter(TypeParameterPosition ppos) { typeParamMatchPosition(this.getTypeItem().getGenericParamList().getATypeParam(), result, ppos) } abstract TypeItem getTypeItem(); - abstract TupleField getTupleField(int i); + abstract TypeRepr getParameterTypeRepr(int pos); Type getReturnType(TypePath path) { result = TDataType(this.getTypeItem()) and @@ -3099,198 +3021,164 @@ abstract private class TupleLikeConstructor extends Addressable { } Type getDeclaredType(FunctionPosition pos, TypePath path) { - result = this.getParameterType(pos, path) + result = this.getParameterType(pos.asPosition(), path) or pos.isReturn() and result = this.getReturnType(path) - or - pos.isSelf() and - result = this.getReturnType(path) } - Type getParameterType(FunctionPosition pos, TypePath path) { - result = this.getTupleField(pos.asPosition()).getTypeRepr().(TypeMention).getTypeAt(path) + Type getParameterType(int pos, TypePath path) { + result = this.getParameterTypeRepr(pos).(TypeMention).getTypeAt(path) } } -private class TupleLikeStruct extends TupleLikeConstructor instanceof Struct { - TupleLikeStruct() { this.isTuple() } - +private class StructConstructor extends Constructor instanceof Struct { override TypeItem getTypeItem() { result = this } - override TupleField getTupleField(int i) { result = Struct.super.getTupleField(i) } + override TypeRepr getParameterTypeRepr(int i) { + result = [super.getTupleField(i).getTypeRepr(), super.getNthStructField(i).getTypeRepr()] + } } -private class TupleLikeVariant extends TupleLikeConstructor instanceof Variant { - TupleLikeVariant() { this.isTuple() } - +private class VariantConstructor extends Constructor instanceof Variant { override TypeItem getTypeItem() { result = super.getEnum() } - override TupleField getTupleField(int i) { result = Variant.super.getTupleField(i) } + override TypeRepr getParameterTypeRepr(int i) { + result = [super.getTupleField(i).getTypeRepr(), super.getNthStructField(i).getTypeRepr()] + } } /** - * A matching configuration for resolving types of calls like - * `foo::bar(baz)` where the target is not a method. - * - * This also includes "calls" to tuple variants and tuple structs such - * as `Result::Ok(42)`. + * A matching configuration for resolving types of constructions of enums and + * structs, such as `Result::Ok(42)`, `Foo { bar: 1 }` and `None`. */ -private module NonMethodCallMatchingInput implements MatchingInputSig { +private module ConstructionMatchingInput implements MatchingInputSig { import FunctionPositionMatchingInput - private class NonMethodFunctionDeclaration extends NonMethodFunction, FunctionDeclaration { } + class Declaration = Constructor; - private newtype TDeclaration = - TNonMethodFunctionDeclaration(ImplOrTraitItemNodeOption i, NonMethodFunctionDeclaration f) { - f.isFor(i) - } or - TTupleLikeConstructorDeclaration(TupleLikeConstructor tc) + abstract class Access extends AstNode { + abstract Type getInferredType(FunctionPosition pos, TypePath path); - abstract class Declaration extends TDeclaration { - abstract TypeParameter getTypeParameter(TypeParameterPosition ppos); + abstract Declaration getTarget(); - pragma[nomagic] - abstract Type getParameterType(DeclarationPosition dpos, TypePath path); + abstract AstNode getNodeAt(AccessPosition apos); - abstract Type getReturnType(TypePath path); + abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); - Type getDeclaredType(DeclarationPosition dpos, TypePath path) { - result = this.getParameterType(dpos, path) - or - dpos.isReturn() and - result = this.getReturnType(path) + /** + * 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 + ) + ) } - - abstract string toString(); - - abstract Location getLocation(); } - private class NonMethodFunctionDecl extends Declaration, TNonMethodFunctionDeclaration { - private ImplOrTraitItemNodeOption i; - private NonMethodFunctionDeclaration f; - - NonMethodFunctionDecl() { this = TNonMethodFunctionDeclaration(i, f) } - - override TypeParameter getTypeParameter(TypeParameterPosition ppos) { - result = f.getTypeParameter(i, ppos) - } - - override Type getParameterType(DeclarationPosition dpos, TypePath path) { - result = f.getParameterType(i, dpos, path) + private class NonAssocCallAccess extends Access, NonAssocCallExpr, + ContextTyping::ContextTypedCallCand + { + NonAssocCallAccess() { + this instanceof CallExprImpl::TupleStructExpr or + this instanceof CallExprImpl::TupleVariantExpr } - override Type getReturnType(TypePath path) { result = f.getReturnType(i, path) } - - override string toString() { - i.isNone() and result = f.toString() - or - result = f.toStringExt(i.asSome()) + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = NonAssocCallExpr.super.getTypeArgument(apos, path) } - override Location getLocation() { result = f.getLocation() } - } - - private class TupleLikeConstructorDeclaration extends Declaration, - TTupleLikeConstructorDeclaration - { - TupleLikeConstructor tc; - - TupleLikeConstructorDeclaration() { this = TTupleLikeConstructorDeclaration(tc) } - - override TypeParameter getTypeParameter(TypeParameterPosition ppos) { - result = tc.getTypeParameter(ppos) + override AstNode getNodeAt(AccessPosition apos) { + result = NonAssocCallExpr.super.getNodeAt(apos) } - override Type getParameterType(DeclarationPosition dpos, TypePath path) { - result = tc.getParameterType(dpos, path) + override Type getInferredType(FunctionPosition pos, TypePath path) { + result = NonAssocCallExpr.super.getInferredType(pos, path) } - override Type getReturnType(TypePath path) { result = tc.getReturnType(path) } - - override string toString() { result = tc.toString() } - - override Location getLocation() { result = tc.getLocation() } + override Declaration getTarget() { result = this.resolveCallTargetViaPathResolution() } } - class Access extends NonMethodResolution::NonMethodCall, ContextTyping::ContextTypedCallCand { + abstract private class StructAccess extends Access instanceof PathAstNode { pragma[nomagic] - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = getCallExprTypeArgument(this, apos, path) + override Type getInferredType(AccessPosition apos, TypePath path) { + result = inferType(this.getNodeAt(apos), path) } pragma[nomagic] - Type getInferredType(AccessPosition apos, TypePath path) { - apos.isTypeQualifier() and - result = getCallExprTypeQualifier(this, path, false) - or - result = inferType(this.getNodeAt(apos), path) - } + override Declaration getTarget() { result = resolvePath(super.getPath()) } - pragma[inline] - Declaration getTarget() { - exists(ImplOrTraitItemNodeOption i, NonMethodFunctionDeclaration f | - result = TNonMethodFunctionDeclaration(i, f) - | - f = this.resolveCallTargetViaTypeInference(i.asSome()) // mutual recursion; resolving some associated function calls requires resolving types - or - f = this.resolveCallTargetViaPathResolution() and - f.isDirectlyFor(i) - ) - or - exists(ItemNode i | i = this.resolveCallTargetViaPathResolution() | - result = TTupleLikeConstructorDeclaration(i) + 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) ) } + } - /** - * Holds if the return type of this call at `path` may have to be inferred - * from the context. - */ - pragma[nomagic] - predicate hasUnknownTypeAt(FunctionPosition pos, TypePath path) { - exists(ImplOrTraitItemNodeOption i, NonMethodFunctionDeclaration f | - TNonMethodFunctionDeclaration(i, f) = this.getTarget() and - this.hasUnknownTypeAt(i.asSome(), f, pos, path) - ) + private class StructExprAccess extends StructAccess, StructExpr { + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = super.getTypeArgument(apos, path) or - forex(ImplOrTraitItemNode i, NonMethodFunctionDeclaration f | - f = this.getPathResolutionResolved(i) - | - this.hasUnknownTypeAt(i, f, pos, path) + exists(TypePath suffix | + suffix.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) and + result = CertainTypeInference::inferCertainType(this, suffix) ) + } + + override AstNode getNodeAt(AccessPosition apos) { + result = + this.getFieldExpr(pragma[only_bind_into](this.getNthStructField(apos.asPosition()) + .getName() + .getText())).getExpr() or - // Tuple declarations, such as `Result::Ok(...)`, may also be context typed - exists(TupleLikeConstructor tc, TypeParameter tp | - tc = this.resolveCallTargetViaPathResolution() and - pos.isReturn() and - tp = tc.getReturnType(path) and - not tp = tc.getParameterType(_, _) and - // check that no explicit type arguments have been supplied for `tp` - not exists(TypeArgumentPosition tapos | - exists(this.getTypeArgument(tapos, _)) and - TTypeParamTypeParameter(tapos.asTypeParam()) = tp - ) - ) + result = this and apos.isReturn() } } + + /** A potential nullary struct/variant construction such as `None`. */ + private class PathExprAccess extends StructAccess, PathExpr { + PathExprAccess() { not exists(CallExpr ce | this = ce.getFunction()) } + + override AstNode getNodeAt(AccessPosition apos) { result = this and apos.isReturn() } + } } -private module NonMethodCallMatching = Matching; +private module ConstructionMatching = Matching; pragma[nomagic] -private Type inferNonMethodCallType0(AstNode n, FunctionPosition pos, TypePath path) { - exists(NonMethodCallMatchingInput::Access a | n = a.getNodeAt(pos) | - result = NonMethodCallMatching::inferAccessType(a, pos, path) +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() ) } -private predicate inferNonMethodCallType = - ContextTyping::CheckContextTyping::check/2; +private predicate inferConstructionType = + ContextTyping::CheckContextTyping::check/2; /** * A matching configuration for resolving types of operations like `a + b`. @@ -3299,22 +3187,22 @@ private module OperationMatchingInput implements MatchingInputSig { private import codeql.rust.elements.internal.OperationImpl::Impl as OperationImpl import FunctionPositionMatchingInput - class Declaration extends MethodCallMatchingInput::Declaration { + class Declaration extends FunctionCallMatchingInput::Declaration { private Method getSelfOrImpl() { - result = m + result = f or - m.implements(result) + f.implements(result) } pragma[nomagic] - private predicate borrowsAt(DeclarationPosition pos) { + 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.isSelf() and borrows >= 1 + pos.asPosition() = 0 and borrows >= 1 or - pos.asPosition() = 0 and + pos.asPosition() = 1 and borrows >= 2 ) ) @@ -3323,30 +3211,30 @@ private module OperationMatchingInput implements MatchingInputSig { pragma[nomagic] private predicate derefsReturn() { this.getSelfOrImpl() = any(DerefTrait t).getDerefFunction() } - Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + Type getDeclaredType(FunctionPosition pos, TypePath path) { exists(TypePath path0 | - result = super.getDeclaredType(dpos, path0) and + result = super.getDeclaredType(pos, path0) and if - this.borrowsAt(dpos) + this.borrowsAt(pos) or - dpos.isReturn() and this.derefsReturn() + pos.isReturn() and this.derefsReturn() then path0.isCons(getRefTypeParameter(_), path) else path0 = path ) } } - class Access extends MethodResolution::MethodCallOperation { + class Access extends AssocFunctionResolution::OperationAssocFunctionCall { Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } pragma[nomagic] - Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) + Type getInferredType(FunctionPosition pos, TypePath path) { + result = inferType(this.getNodeAt(pos), path) } Declaration getTarget() { exists(ImplOrTraitItemNode i | - result.isMethod(i, this.resolveCallTarget(i, _, _)) // mutual recursion + result.isAssocFunction(i, this.resolveCallTarget(i, _, _, _)) // mutual recursion ) } } @@ -3355,15 +3243,23 @@ private module OperationMatchingInput implements MatchingInputSig { private module OperationMatching = Matching; pragma[nomagic] -private Type inferOperationType0(AstNode n, FunctionPosition pos, TypePath path) { - exists(OperationMatchingInput::Access a | +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) + 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() ) } private predicate inferOperationType = - ContextTyping::CheckContextTyping::check/2; + ContextTyping::CheckContextTyping::check/2; pragma[nomagic] private Type getFieldExprLookupType(FieldExpr fe, string name, DerefChain derefChain) { @@ -3683,7 +3579,7 @@ final private class AwaitTarget extends Expr { Type getTypeAt(TypePath path) { result = inferType(this, path) } } -private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInputSig { +private module AwaitSatisfiesTypeInput implements SatisfiesTypeInputSig { pragma[nomagic] predicate relevantConstraint(AwaitTarget term, Type constraint) { exists(term) and @@ -3691,13 +3587,12 @@ private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInput } } -private module AwaitSatisfiesConstraint = - SatisfiesConstraint; +private module AwaitSatisfiesType = SatisfiesType; pragma[nomagic] private Type inferAwaitExprType(AstNode n, TypePath path) { exists(TypePath exprPath | - AwaitSatisfiesConstraint::satisfiesConstraintType(n.(AwaitExpr).getExpr(), _, exprPath, result) and + AwaitSatisfiesType::satisfiesConstraint(n.(AwaitExpr).getExpr(), _, exprPath, result) and exprPath.isCons(getFutureOutputTypeParameter(), path) ) } @@ -3714,43 +3609,6 @@ private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result instanceof pragma[nomagic] private Type inferRangeExprType(RangeExpr re) { result = TDataType(getRangeType(re)) } -/** - * According to [the Rust reference][1]: _"array and slice-typed expressions - * can be indexed with a `usize` index ... For other types an index expression - * `a[b]` is equivalent to *std::ops::Index::index(&a, b)"_. - * - * The logic below handles array and slice indexing, but for other types it is - * currently limited to `Vec`. - * - * [1]: https://doc.rust-lang.org/reference/expressions/array-expr.html#r-expr.array.index - */ -pragma[nomagic] -private Type inferIndexExprType(IndexExpr ie, TypePath path) { - // TODO: Method resolution to the `std::ops::Index` trait can handle the - // `Index` instances for slices and arrays. - exists(TypePath exprPath, Builtins::BuiltinType t | - TDataType(t) = inferType(ie.getIndex()) and - ( - // also allow `i32`, since that is currently the type that we infer for - // integer literals like `0` - t instanceof Builtins::I32 - or - t instanceof Builtins::Usize - ) and - result = inferType(ie.getBase(), exprPath) - | - // todo: remove? - exprPath.isCons(TTypeParamTypeParameter(any(Vec v).getElementTypeParam()), path) - or - exprPath.isCons(getArrayTypeParameter(), path) - or - exists(TypePath path0 | - exprPath.isCons(getRefTypeParameter(_), path0) and - path0.isCons(getSliceTypeParameter(), path) - ) - ) -} - pragma[nomagic] private Type getInferredDerefType(DerefExpr de, TypePath path) { result = inferType(de, path) } @@ -3773,100 +3631,59 @@ private Type inferDereferencedExprPtrType(AstNode n, TypePath path) { } /** - * A matching configuration for resolving types of struct patterns - * like `let Foo { bar } = ...`. + * A matching configuration for resolving types of deconstruction patterns like + * `let Foo { bar } = ...` or `let Some(x) = ...`. */ -private module StructPatMatchingInput implements MatchingInputSig { - class DeclarationPosition = StructExprMatchingInput::DeclarationPosition; +private module DeconstructionPatMatchingInput implements MatchingInputSig { + import FunctionPositionMatchingInput - class Declaration = StructExprMatchingInput::Declaration; + class Declaration = ConstructionMatchingInput::Declaration; - class AccessPosition = DeclarationPosition; + class Access extends Pat instanceof PathAstNode { + Access() { this instanceof TupleStructPat or this instanceof StructPat } - class Access extends StructPat { Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } AstNode getNodeAt(AccessPosition apos) { - result = this.getPatField(apos.asFieldPos()).getPat() - or - result = this and - apos.isStructPos() - } - - Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) + this = + any(StructPat sp | + result = + sp.getPatField(pragma[only_bind_into](sp.getNthStructField(apos.asPosition()) + .getName() + .getText())).getPat() + ) or - // The struct/enum type is supplied explicitly as a type qualifier, e.g. - // `let Foo::Variant { ... } = ...`. - apos.isStructPos() and - result = this.getPath().(TypeMention).getTypeAt(path) - } - - Declaration getTarget() { result = resolvePath(this.getPath()) } - } - - predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos = dpos - } -} - -private module StructPatMatching = Matching; - -/** - * Gets the type of `n` at `path`, where `n` is either a struct pattern or - * a field pattern of a struct pattern. - */ -pragma[nomagic] -private Type inferStructPatType(AstNode n, TypePath path) { - exists(StructPatMatchingInput::Access a, StructPatMatchingInput::AccessPosition apos | - n = a.getNodeAt(apos) and - result = StructPatMatching::inferAccessType(a, apos, path) - ) -} - -/** - * A matching configuration for resolving types of tuple struct patterns - * like `let Some(x) = ...`. - */ -private module TupleStructPatMatchingInput implements MatchingInputSig { - import FunctionPositionMatchingInput - - class Declaration = TupleLikeConstructor; - - class Access extends TupleStructPat { - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } - - AstNode getNodeAt(AccessPosition apos) { - result = this.getField(apos.asPosition()) + result = this.(TupleStructPat).getField(apos.asPosition()) or result = this and - apos.isSelf() + apos.isReturn() } 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.isSelf() and - result = this.getPath().(TypeMention).getTypeAt(path) + apos.isReturn() and + result = super.getPath().(TypeMention).getTypeAt(path) } - Declaration getTarget() { result = resolvePath(this.getPath()) } + Declaration getTarget() { result = resolvePath(super.getPath()) } } } -private module TupleStructPatMatching = Matching; +private module DeconstructionPatMatching = Matching; /** - * Gets the type of `n` at `path`, where `n` is either a tuple struct pattern or - * a positional pattern of a tuple struct pattern. + * 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 inferTupleStructPatType(AstNode n, TypePath path) { - exists(TupleStructPatMatchingInput::Access a, TupleStructPatMatchingInput::AccessPosition apos | +private Type inferDeconstructionPatType(AstNode n, TypePath path) { + exists(DeconstructionPatMatchingInput::Access a, FunctionPosition apos | n = a.getNodeAt(apos) and - result = TupleStructPatMatching::inferAccessType(a, apos, path) + result = DeconstructionPatMatching::inferAccessType(a, apos, path) ) } @@ -3876,9 +3693,7 @@ final private class ForIterableExpr extends Expr { Type getTypeAt(TypePath path) { result = inferType(this, path) } } -private module ForIterableSatisfiesConstraintInput implements - SatisfiesConstraintInputSig -{ +private module ForIterableSatisfiesTypeInput implements SatisfiesTypeInputSig { predicate relevantConstraint(ForIterableExpr term, Type constraint) { exists(term) and exists(Trait t | t = constraint.(TraitType).getTrait() | @@ -3899,15 +3714,15 @@ private AssociatedTypeTypeParameter getIntoIteratorItemTypeParameter() { result = getAssociatedTypeTypeParameter(any(IntoIteratorTrait t).getItemType()) } -private module ForIterableSatisfiesConstraint = - SatisfiesConstraint; +private module ForIterableSatisfiesType = + SatisfiesType; 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 - ForIterableSatisfiesConstraint::satisfiesConstraintType(fe.getIterable(), _, exprPath, result) and + ForIterableSatisfiesType::satisfiesConstraint(fe.getIterable(), _, exprPath, result) and exprPath.isCons(tp, path) | tp = getIntoIteratorItemTypeParameter() @@ -3918,131 +3733,36 @@ private Type inferForLoopExprType(AstNode n, TypePath path) { ) } -/** - * An invoked expression, the target of a call that is either a local variable - * or a non-path expression. This means that the expression denotes a - * first-class function. - */ -final private class InvokedClosureExpr extends Expr { - private CallExprImpl::DynamicCallExpr call; - - InvokedClosureExpr() { call.getFunction() = this } - - Type getTypeAt(TypePath path) { result = inferType(this, path) } - - CallExpr getCall() { result = call } -} - -private module InvokedClosureSatisfiesConstraintInput implements - SatisfiesConstraintInputSig -{ - predicate relevantConstraint(InvokedClosureExpr term, Type constraint) { - exists(term) and - constraint.(TraitType).getTrait() instanceof FnOnceTrait - } -} - -private module InvokedClosureSatisfiesConstraint = - SatisfiesConstraint; - -/** Gets the type of `ce` when viewed as an implementation of `FnOnce`. */ -private Type invokedClosureFnTypeAt(InvokedClosureExpr ce, TypePath path) { - InvokedClosureSatisfiesConstraint::satisfiesConstraintType(ce, _, path, result) -} - -/** - * Gets the root type of a closure. - * - * 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. - */ -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())) -} - -/** Gets the path to a closure with arity `arity`'s `index`th parameter type. */ -pragma[nomagic] -private TypePath closureParameterPath(int arity, int index) { - result = - TypePath::cons(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam()), - TypePath::singleton(getTupleTypeParameter(arity, index))) -} - -/** Gets the path to the return type of the `FnOnce` trait. */ -private TypePath fnReturnPath() { - result = TypePath::singleton(getAssociatedTypeTypeParameter(any(FnOnceTrait t).getOutputType())) -} - -/** - * Gets the path to the parameter type of the `FnOnce` trait with arity `arity` - * and index `index`. - */ -pragma[nomagic] -private TypePath fnParameterPath(int arity, int index) { - result = - TypePath::cons(TTypeParamTypeParameter(any(FnOnceTrait t).getTypeParam()), - TypePath::singleton(getTupleTypeParameter(arity, index))) -} - pragma[nomagic] -private Type inferDynamicCallExprType(Expr n, TypePath path) { - exists(InvokedClosureExpr ce | - // Propagate the function's return type to the call expression - exists(TypePath path0 | result = invokedClosureFnTypeAt(ce, path0) | - n = ce.getCall() and - path = path0.stripPrefix(fnReturnPath()) +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 - // Propagate the function's parameter type to the arguments - exists(int index | - n = ce.getCall().getSyntacticPositionalArgument(index) and - path = - path0.stripPrefix(fnParameterPath(ce.getCall().getArgList().getNumberOfArgs(), index)) + exists(TypePath path0 | + result = ce.getRetType().getTypeRepr().(TypeMention).getTypeAt(path0) and + path = closureReturnPath().append(path0) ) ) or - // _If_ the invoked expression has the type of a closure, then we propagate - // the surrounding types into the closure. - exists(int arity, TypePath path0 | ce.getTypeAt(TypePath::nil()) = closureRootType() | - // Propagate the type of arguments to the parameter types of closure - exists(int index, ArgList args | - n = ce and - args = ce.getCall().getArgList() and - arity = args.getNumberOfArgs() and - result = inferType(args.getArg(index), path0) and - path = closureParameterPath(arity, index).append(path0) - ) - or - // Propagate the type of the call expression to the return type of the closure - n = ce and - arity = ce.getCall().getArgList().getNumberOfArgs() and - result = inferType(ce.getCall(), path0) and - path = closureReturnPath().append(path0) + exists(Param p | + p = ce.getAParam() and + not p.hasTypeRepr() and + n = p.getPat() and + result = TUnknownType() and + path.isEmpty() ) ) } pragma[nomagic] -private Type inferClosureExprType(AstNode n, TypePath path) { - exists(ClosureExpr ce | - n = ce and - path.isEmpty() and - result = closureRootType() - or - n = ce and - path = TypePath::singleton(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam())) and - result.(TupleType).getArity() = ce.getNumberOfParams() - or - // Propagate return type annotation to body - n = ce.getClosureBody() and - result = ce.getRetType().getTypeRepr().(TypeMention).getTypeAt(path) +private TupleType inferArgList(ArgList args, TypePath path) { + exists(CallExprImpl::DynamicCallExpr dce | + args = dce.getArgList() and + result.getArity() = dce.getNumberOfSyntacticArguments() and + path.isEmpty() ) } @@ -4057,7 +3777,8 @@ private module Cached { cached predicate implicitDerefChainBorrow(Expr e, DerefChain derefChain, boolean borrow) { exists(BorrowKind bk | - any(MethodResolution::MethodCall mc).argumentHasImplicitDerefChainBorrow(e, derefChain, bk) and + any(AssocFunctionResolution::AssocFunctionCall afc) + .argumentHasImplicitDerefChainBorrow(e, derefChain, bk) and if bk.isNoBorrow() then borrow = false else borrow = true ) or @@ -4082,15 +3803,16 @@ private module Cached { cached Addressable resolveCallTarget(InvocationExpr call, boolean dispatch) { dispatch = false and - result = call.(NonMethodResolution::NonMethodCall).resolveCallTargetViaPathResolution() + result = call.(NonAssocCallExpr).resolveCallTargetViaPathResolution() or exists(ImplOrTraitItemNode i | i instanceof TraitItemNode and dispatch = true or i instanceof ImplItemNode and dispatch = false | - result = call.(MethodResolution::MethodCall).resolveCallTarget(i, _, _) or - result = call.(NonMethodResolution::NonMethodCall).resolveCallTargetViaTypeInference(i) + result = call.(AssocFunctionResolution::AssocFunctionCall).resolveCallTarget(i, _, _, _) and + not call instanceof CallExprImpl::DynamicCallExpr and + not i instanceof Builtins::BuiltinImpl ) } @@ -4167,21 +3889,20 @@ private module Cached { or // Don't propagate type information into a node which conflicts with certain // type information. - ( - if CertainTypeInference::hasInferredCertainType(n) - then not CertainTypeInference::certainTypeConflict(n, path, result) - else any() + forall(TypePath prefix | + CertainTypeInference::hasInferredCertainType(n, prefix) and + prefix.isPrefixOf(path) + | + not CertainTypeInference::certainTypeConflict(n, prefix, path, result) ) and ( result = inferAssignmentOperationType(n, path) or result = inferTypeEquality(n, path) or - result = inferStructExprType(n, path) + result = inferFunctionCallType(n, path) or - result = inferMethodCallType(n, path) - or - result = inferNonMethodCallType(n, path) + result = inferConstructionType(n, path) or result = inferOperationType(n, path) or @@ -4193,19 +3914,17 @@ private module Cached { or result = inferAwaitExprType(n, path) or - result = inferIndexExprType(n, path) - or result = inferDereferencedExprPtrType(n, path) or result = inferForLoopExprType(n, path) or - result = inferDynamicCallExprType(n, path) - or result = inferClosureExprType(n, path) or - result = inferStructPatType(n, path) + result = inferArgList(n, path) + or + result = inferDeconstructionPatType(n, path) or - result = inferTupleStructPatType(n, path) + result = inferUnknownTypeFromAnnotation(n, path) ) } } @@ -4241,7 +3960,7 @@ private module Debug { TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ) { abs = getRelevantLocatable() and - Input::conditionSatisfiesConstraint(abs, condition, constraint, transitive) + Input2::conditionSatisfiesConstraint(abs, condition, constraint, transitive) } predicate debugInferShorthandSelfType(ShorthandSelfParameterMention self, TypePath path, Type t) { @@ -4249,14 +3968,14 @@ private module Debug { t = self.getTypeAt(path) } - predicate debugInferMethodCallType(AstNode n, TypePath path, Type t) { + predicate debugInferFunctionCallType(AstNode n, TypePath path, Type t) { n = getRelevantLocatable() and - t = inferMethodCallType(n, path) + t = inferFunctionCallType(n, path) } - predicate debugInferNonMethodCallType(AstNode n, TypePath path, Type t) { + predicate debugInferConstructionType(AstNode n, TypePath path, Type t) { n = getRelevantLocatable() and - t = inferNonMethodCallType(n, path) + t = inferConstructionType(n, path) } predicate debugTypeMention(TypeMention tm, TypePath path, Type type) { diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll index dcb3fc0b0f49..c4650f97c34b 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll @@ -205,6 +205,13 @@ private module MkTypeMention::...` + exists(PathTypeRepr typeRepr, PathTypeRepr traitRepr | + pathTypeAsTraitAssoc(_, typeRepr, traitRepr, _, _) and + this = traitRepr.getPath() and + result = typeRepr.getPath() + ) } pragma[nomagic] @@ -696,16 +703,26 @@ private module PreTypeMention = MkTypeMention; class PreTypeMention = PreTypeMention::TypeMention; +private class TraitOrTmTrait extends AstNode { + Type getTypeAt(TypePath path) { + pathTypeAsTraitAssoc(_, _, this, _, _) and + result = this.(PreTypeMention).getTypeAt(path) + or + result = TTrait(this) and + path.isEmpty() + } +} + /** * Holds if `path` accesses an associated type `alias` from `trait` on a * concrete type given by `tm`. * - * `implOrTmTrait` is either the mention that resolves to `trait` when `path` - * is of the form `::AssocType`, or the enclosing `impl` block - * when `path` is of the form `Self::AssocType`. + * `traitOrTmTrait` is either the mention that resolves to `trait` when `path` + * is of the form `::AssocType`, or the trait being implemented + * when `path` is of the form `Self::AssocType` within an `impl` block. */ private predicate pathConcreteTypeAssocType( - Path path, PreTypeMention tm, TraitItemNode trait, AstNode implOrTmTrait, TypeAlias alias + Path path, PreTypeMention tm, TraitItemNode trait, TraitOrTmTrait traitOrTmTrait, TypeAlias alias ) { exists(Path qualifier | qualifier = path.getQualifier() and @@ -713,31 +730,34 @@ private predicate pathConcreteTypeAssocType( | // path of the form `::AssocType` // ^^^ tm ^^^^^^^^^ name + // ^^^^^ traitOrTmTrait exists(string name | - pathTypeAsTraitAssoc(path, tm, implOrTmTrait, trait, name) and + pathTypeAsTraitAssoc(path, tm, traitOrTmTrait, trait, name) and getTraitAssocType(trait, name) = alias ) or // path of the form `Self::AssocType` within an `impl` block // tm ^^^^ ^^^^^^^^^ name - implOrTmTrait = - any(ImplItemNode impl | - alias = resolvePath(path) and - qualifier = impl.getASelfPath() and - tm = impl.(Impl).getSelfTy() and - trait.getAnAssocItem() = alias - ) + exists(ImplItemNode impl | + alias = resolvePath(path) and + qualifier = impl.getASelfPath() and + tm = impl.(Impl).getSelfTy() and + trait.getAnAssocItem() = alias and + traitOrTmTrait = trait + ) ) } -private module PathSatisfiesConstraintInput implements SatisfiesConstraintInputSig { - predicate relevantConstraint(PreTypeMention tm, Type constraint) { - pathConcreteTypeAssocType(_, tm, constraint.(TraitType).getTrait(), _, _) +private module PathSatisfiesConstraintInput implements + PreM2::SatisfiesConstraintInputSig +{ + predicate relevantConstraint(PreTypeMention tm, TraitOrTmTrait constraint) { + pathConcreteTypeAssocType(_, tm, _, constraint, _) } } private module PathSatisfiesConstraint = - SatisfiesConstraint; + PreM2::SatisfiesConstraint; /** * Gets the type of `path` at `typePath` when `path` accesses an associated type @@ -745,26 +765,12 @@ private module PathSatisfiesConstraint = */ private Type getPathConcreteAssocTypeAt(Path path, TypePath typePath) { exists( - PreTypeMention tm, ImplItemNode impl, TraitItemNode trait, TraitType t, AstNode implOrTmTrait, + PreTypeMention tm, ImplItemNode impl, TraitItemNode trait, TraitOrTmTrait traitOrTmTrait, TypeAlias alias, TypePath path0 | - pathConcreteTypeAssocType(path, tm, trait, implOrTmTrait, alias) and - t = TTrait(trait) and - PathSatisfiesConstraint::satisfiesConstraintTypeThrough(tm, impl, t, path0, result) and + pathConcreteTypeAssocType(path, tm, trait, traitOrTmTrait, alias) and + PathSatisfiesConstraint::satisfiesConstraintThrough(tm, impl, traitOrTmTrait, path0, result) and path0.isCons(TAssociatedTypeTypeParameter(trait, alias), typePath) - | - implOrTmTrait instanceof Impl - or - // When `path` is of the form `::AssocType` we need to check - // that `impl` is not more specific than the mentioned trait - implOrTmTrait = - any(PreTypeMention tmTrait | - not exists(TypePath path1, Type t1 | - t1 = impl.getTraitPath().(PreTypeMention).getTypeAt(path1) and - not t1 instanceof TypeParameter and - t1 != tmTrait.getTypeAt(path1) - ) - ) ) } diff --git a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll index 117f67a7b4e5..89a0a2c5c926 100644 --- a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts @@ -69,6 +70,13 @@ module AccessInvalidPointer { ModelsAsDataSink() { sinkNode(this, "pointer-access") } } + /** + * A barrier for invalid pointer access from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "pointer-access") } + } + /** * A barrier for invalid pointer access vulnerabilities for values checked to * be non-`null`. diff --git a/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll b/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll index f634992fb81e..c728d29f0155 100644 --- a/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.security.SensitiveData private import codeql.rust.Concepts @@ -44,6 +45,13 @@ module CleartextLogging { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + /** + * A barrier for logging from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "log-injection") } + } + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier diff --git a/rust/ql/lib/codeql/rust/security/CleartextStorageDatabaseExtensions.qll b/rust/ql/lib/codeql/rust/security/CleartextStorageDatabaseExtensions.qll index f92b2df1dc0b..afbf27e5bc9e 100644 --- a/rust/ql/lib/codeql/rust/security/CleartextStorageDatabaseExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/CleartextStorageDatabaseExtensions.qll @@ -45,4 +45,11 @@ module CleartextStorageDatabase { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, ["sql-injection", "database-store"]) } } + + /** + * A barrier for cleartext storage vulnerabilities from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, ["sql-injection", "database-store"]) } + } } diff --git a/rust/ql/lib/codeql/rust/security/CleartextTransmissionExtensions.qll b/rust/ql/lib/codeql/rust/security/CleartextTransmissionExtensions.qll index 7d5a91a55f74..14ee95186c3a 100644 --- a/rust/ql/lib/codeql/rust/security/CleartextTransmissionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/CleartextTransmissionExtensions.qll @@ -6,6 +6,7 @@ private import codeql.util.Unit private import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.security.SensitiveData private import codeql.rust.Concepts @@ -55,4 +56,11 @@ module CleartextTransmission { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, ["transmission", "request-url"]) } } + + /** + * A barrier defined through MaD. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, ["transmission", "request-url"]) } + } } diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index a86ee506dfa9..a5933bc74b1c 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.rust.dataflow.internal.Node as Node @@ -21,6 +22,11 @@ module DisabledCertificateCheckExtensions { override string getSinkType() { result = "DisabledCertificateCheck" } } + /** + * A data flow barrier for disabled certificate check vulnerabilities. + */ + abstract class Barrier extends DataFlow::Node { } + /** * A sink for disabled certificate check vulnerabilities from model data. */ @@ -42,4 +48,11 @@ module DisabledCertificateCheckExtensions { ) } } + + /** + * A barrier for disabled certificate check vulnerabilities from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "disable-certificate") } + } } diff --git a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll index 9bdfc53971e3..09e2505eb5c2 100644 --- a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts @@ -130,6 +131,19 @@ module HardcodedCryptographicValue { override CryptographicValueKind getKind() { result = kind } } + /** + * An externally modeled barrier for hard-coded cryptographic value vulnerabilities. + * + * Note that a barrier will block flow to all hard-coded cryptographic value + * sinks, regardless of the `kind` that is specified. For example a barrier of + * kind `credentials-key` will block flow to a sink of kind `credentials-iv`. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { + exists(CryptographicValueKind kind | barrierNode(this, "credentials-" + kind)) + } + } + /** * A call to `getrandom` that is a barrier. */ diff --git a/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll b/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll index 87d37d6b85b4..bd74dcb8728b 100644 --- a/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts @@ -48,6 +49,13 @@ module InsecureCookie { ModelsAsDataSink() { sinkNode(this, "cookie-use") } } + /** + * A barrier for insecure cookie vulnerabilities from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "cookie-use") } + } + /** * Holds if a models-as-data optional barrier for cookies is specified for `summaryNode`, * with arguments `attrib` (`secure` or `partitioned`) and `arg` (argument index). For example, diff --git a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll index 31403b625f92..40d113623554 100644 --- a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit @@ -44,6 +45,13 @@ module LogInjection { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + /** + * A barrier for log-injection from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "log-injection") } + } + /** * A barrier for log injection vulnerabilities for nodes whose type is a * numeric type, which is unlikely to expose any vulnerability. diff --git a/rust/ql/lib/codeql/rust/security/RequestForgeryExtensions.qll b/rust/ql/lib/codeql/rust/security/RequestForgeryExtensions.qll index 1822baff6448..d5b75258ad42 100644 --- a/rust/ql/lib/codeql/rust/security/RequestForgeryExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/RequestForgeryExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.dataflow.FlowSource private import codeql.rust.Concepts @@ -46,4 +47,11 @@ module RequestForgery { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "request-url") } } + + /** + * A barrier for request forgery from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "request-url") } + } } diff --git a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll index f36ab264987a..de2622974f6f 100644 --- a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll @@ -6,6 +6,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit @@ -53,12 +54,19 @@ module SqlInjection { } /** - * A sink for sql-injection from model data. + * A sink for SQL injection from model data. */ private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "sql-injection") } } + /** + * A barrier for SQL injection from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "sql-injection") } + } + /** * A barrier for SQL injection vulnerabilities for nodes whose type is a numeric * type, which is unlikely to expose any vulnerability. diff --git a/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll b/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll index ccf3736ceb4a..2bd009909f6d 100644 --- a/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll @@ -47,6 +47,11 @@ module TaintedPath { private class ModelsAsDataSinks extends Sink { ModelsAsDataSinks() { sinkNode(this, "path-injection") } } + + /** A barrier for path-injection from model data. */ + private class ModelsAsDataBarriers extends Barrier { + ModelsAsDataBarriers() { barrierNode(this, "path-injection") } + } } private predicate sanitizerGuard(AstNode g, Expr e, boolean branch) { diff --git a/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll b/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll index c6251563ea6f..f0c0bed00097 100644 --- a/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll @@ -6,6 +6,7 @@ import rust private import codeql.rust.Concepts private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink /** @@ -32,6 +33,13 @@ module UncontrolledAllocationSize { ModelsAsDataSink() { sinkNode(this, ["alloc-size", "alloc-layout"]) } } + /** + * A barrier for uncontrolled allocation size from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, ["alloc-size", "alloc-layout"]) } + } + /** * A barrier for uncontrolled allocation size that is an upper bound check / guard. */ diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll index 076ed42edfbb..f4dd5a1e1a85 100644 --- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts @@ -59,4 +60,11 @@ module UseOfHttp { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "request-url") } } + + /** + * A barrier for use of HTTP URLs from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "request-url") } + } } diff --git a/rust/ql/lib/codeql/rust/security/XssExtensions.qll b/rust/ql/lib/codeql/rust/security/XssExtensions.qll index 97318ff81737..74ed161acb09 100644 --- a/rust/ql/lib/codeql/rust/security/XssExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/XssExtensions.qll @@ -5,6 +5,7 @@ import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit @@ -44,6 +45,13 @@ module Xss { ModelsAsDataSink() { sinkNode(this, "html-injection") } } + /** + * A barrier for XSS from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "html-injection") } + } + /** * A barrier for XSS vulnerabilities for nodes whose type is a * numeric or boolean type, which is unlikely to expose any vulnerability. diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 7cb0dc47c9f3..3f1dbbafb7d6 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -6,6 +6,7 @@ private import codeql.util.Unit private import rust private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowBarrier private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.rust.security.Barriers as Barriers @@ -69,6 +70,13 @@ module RegexInjection { ModelsAsDataSink() { sinkNode(this, "regex-use") } } + /** + * A barrier for regular expression injection from model data. + */ + private class ModelsAsDataBarrier extends Barrier { + ModelsAsDataBarrier() { barrierNode(this, "regex-use") } + } + /** * An escape barrier for regular expression injection vulnerabilities. */ diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index bce0d1b8fa54..f50310200378 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.2.8 +version: 0.2.12-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index a3b3c7b516ea..eab921bcbd6b 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.1.32 + +### Query Metadata Changes + +* The `@security-severity` metadata of `rust/log-injection` has been increased from 2.6 (low) to 6.1 (medium). +* The `@security-severity` metadata of `rust/xss` has been increased from 6.1 (medium) to 7.8 (high). + +## 0.1.31 + +No user-facing changes. + +## 0.1.30 + +No user-facing changes. + ## 0.1.29 No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.30.md b/rust/ql/src/change-notes/released/0.1.30.md new file mode 100644 index 000000000000..1daa174f80af --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.30.md @@ -0,0 +1,3 @@ +## 0.1.30 + +No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.31.md b/rust/ql/src/change-notes/released/0.1.31.md new file mode 100644 index 000000000000..319c6ad77298 --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.31.md @@ -0,0 +1,3 @@ +## 0.1.31 + +No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.32.md b/rust/ql/src/change-notes/released/0.1.32.md new file mode 100644 index 000000000000..d18f3ccd08df --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.32.md @@ -0,0 +1,6 @@ +## 0.1.32 + +### Query Metadata Changes + +* The `@security-severity` metadata of `rust/log-injection` has been increased from 2.6 (low) to 6.1 (medium). +* The `@security-severity` metadata of `rust/xss` has been increased from 6.1 (medium) to 7.8 (high). diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index 7517c5cff328..21bbd752f27a 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.29 +lastReleaseVersion: 0.1.32 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index e3cb21b0a451..f78504db76eb 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.29 +version: 0.1.33-dev groups: - rust - queries diff --git a/rust/ql/src/queries/security/CWE-079/XSS.ql b/rust/ql/src/queries/security/CWE-079/XSS.ql index 3c43f5043c74..e7609196b3e7 100644 --- a/rust/ql/src/queries/security/CWE-079/XSS.ql +++ b/rust/ql/src/queries/security/CWE-079/XSS.ql @@ -4,7 +4,7 @@ * allows for a cross-site scripting vulnerability. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id rust/xss * @tags security diff --git a/rust/ql/src/queries/security/CWE-117/LogInjection.ql b/rust/ql/src/queries/security/CWE-117/LogInjection.ql index 64d9c47c7909..c00ac310ef67 100644 --- a/rust/ql/src/queries/security/CWE-117/LogInjection.ql +++ b/rust/ql/src/queries/security/CWE-117/LogInjection.ql @@ -4,7 +4,7 @@ * insertion of forged log entries by a malicious user. * @kind path-problem * @problem.severity error - * @security-severity 2.6 + * @security-severity 6.1 * @precision medium * @id rust/log-injection * @tags security diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index ae22a3c9d2c0..3e978e2934b6 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -33,6 +33,8 @@ module DisabledCertificateCheckConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node node) { node instanceof Sink } + predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } + predicate observeDiffInformedIncrementalMode() { any() } } diff --git a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll index fb71423503da..8ec2f3354dbb 100644 --- a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -138,7 +138,10 @@ private module SummaryModelGeneratorInput implements SummaryModelGeneratorInputS Parameter asParameter(NodeExtended node) { result = node.asParameter() } - predicate isAdditionalContentFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { none() } + predicate isAdditionalContentFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { + RustTaintTracking::defaultAdditionalTaintStep(nodeFrom, nodeTo, _) and + not RustDataFlow::readStep(nodeFrom, _, nodeTo) + } predicate isField(DataFlow::ContentSet c) { c.(SingletonContentSet).getContent() instanceof FieldContent diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected index 68da00c4312f..0514da67333d 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected @@ -1,41 +1,20 @@ models edges -| main.rs:9:13:9:19 | ...: ... | main.rs:10:11:10:11 | s | provenance | | -| main.rs:10:11:10:11 | s | main.rs:12:9:12:9 | s | provenance | | -| main.rs:12:9:12:9 | s | main.rs:9:30:14:1 | { ... } | provenance | | | main.rs:21:9:21:9 | s | main.rs:22:10:22:10 | s | provenance | | | main.rs:21:13:21:21 | source(...) | main.rs:21:9:21:9 | s | provenance | | -| main.rs:26:9:26:9 | s | main.rs:27:22:27:22 | s | provenance | | -| main.rs:26:13:26:21 | source(...) | main.rs:26:9:26:9 | s | provenance | | -| main.rs:27:9:27:9 | s | main.rs:28:10:28:10 | s | provenance | | -| main.rs:27:13:27:23 | sanitize(...) | main.rs:27:9:27:9 | s | provenance | | -| main.rs:27:22:27:22 | s | main.rs:9:13:9:19 | ...: ... | provenance | | -| main.rs:27:22:27:22 | s | main.rs:27:13:27:23 | sanitize(...) | provenance | | | main.rs:32:9:32:9 | s | main.rs:33:10:33:10 | s | provenance | | | main.rs:32:13:32:21 | source(...) | main.rs:32:9:32:9 | s | provenance | | nodes -| main.rs:9:13:9:19 | ...: ... | semmle.label | ...: ... | -| main.rs:9:30:14:1 | { ... } | semmle.label | { ... } | -| main.rs:10:11:10:11 | s | semmle.label | s | -| main.rs:12:9:12:9 | s | semmle.label | s | | main.rs:17:10:17:18 | source(...) | semmle.label | source(...) | | main.rs:21:9:21:9 | s | semmle.label | s | | main.rs:21:13:21:21 | source(...) | semmle.label | source(...) | | main.rs:22:10:22:10 | s | semmle.label | s | -| main.rs:26:9:26:9 | s | semmle.label | s | -| main.rs:26:13:26:21 | source(...) | semmle.label | source(...) | -| main.rs:27:9:27:9 | s | semmle.label | s | -| main.rs:27:13:27:23 | sanitize(...) | semmle.label | sanitize(...) | -| main.rs:27:22:27:22 | s | semmle.label | s | -| main.rs:28:10:28:10 | s | semmle.label | s | | main.rs:32:9:32:9 | s | semmle.label | s | | main.rs:32:13:32:21 | source(...) | semmle.label | source(...) | | main.rs:33:10:33:10 | s | semmle.label | s | subpaths -| main.rs:27:22:27:22 | s | main.rs:9:13:9:19 | ...: ... | main.rs:9:30:14:1 | { ... } | main.rs:27:13:27:23 | sanitize(...) | testFailures #select | main.rs:17:10:17:18 | source(...) | main.rs:17:10:17:18 | source(...) | main.rs:17:10:17:18 | source(...) | $@ | main.rs:17:10:17:18 | source(...) | source(...) | | main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | source(...) | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | source(...) | source(...) | -| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | source(...) | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | source(...) | source(...) | | main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | source(...) | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ext.yml b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ext.yml new file mode 100644 index 000000000000..58e55a040d21 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ext.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: barrierModel + data: + - ["main::sanitize", "ReturnValue", "test-barrier", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: barrierGuardModel + data: + - ["main::verify_safe", "Argument[0]", "true", "test-barrier", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ql b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ql index 5dcb7ee70a9d..7cc30bf63508 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ql +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.ql @@ -3,8 +3,19 @@ */ import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.FlowBarrier import utils.test.InlineFlowTest -import DefaultFlowTest + +module CustomConfig implements DataFlow::ConfigSig { + predicate isSource = DefaultFlowConfig::isSource/1; + + predicate isSink = DefaultFlowConfig::isSink/1; + + predicate isBarrier(DataFlow::Node n) { barrierNode(n, "test-barrier") } +} + +import FlowTest import TaintFlow::PathGraph from TaintFlow::PathNode source, TaintFlow::PathNode sink diff --git a/rust/ql/test/library-tests/dataflow/barrier/main.rs b/rust/ql/test/library-tests/dataflow/barrier/main.rs index 14935f0f3286..268a8673bc9b 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/main.rs +++ b/rust/ql/test/library-tests/dataflow/barrier/main.rs @@ -25,10 +25,24 @@ fn through_variable() { fn with_barrier() { let s = source(1); let s = sanitize(s); - sink(s); // $ SPURIOUS: hasValueFlow=1 + sink(s); } fn main() { let s = source(1); sink(s); // $ hasValueFlow=1 } + +fn verify_safe(s: &str) -> bool { + match s { + "dangerous" => false, + _ => true, + } +} + +fn with_barrier_guard() { + let s = source(1); + if verify_safe(s) { + sink(s); + } +} diff --git a/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected b/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected index 7c99702aec63..ca4bbe77479a 100644 --- a/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected @@ -13,9 +13,9 @@ edges | main.rs:29:13:29:22 | f(...) | main.rs:29:9:29:9 | b | provenance | | | main.rs:29:21:29:21 | a | main.rs:27:20:27:23 | ... | provenance | | | main.rs:29:21:29:21 | a | main.rs:29:13:29:22 | f(...) | provenance | | -| main.rs:37:16:37:25 | source(...) | main.rs:39:5:39:5 | [post] f [captured capt] | provenance | | -| main.rs:39:5:39:5 | [post] f [captured capt] | main.rs:40:10:40:13 | capt | provenance | | -| main.rs:39:5:39:5 | [post] f [captured capt] | main.rs:44:5:44:5 | g [captured capt] | provenance | | +| main.rs:37:16:37:25 | source(...) | main.rs:39:5:39:5 | [post] f : ... => .. [captured capt] | provenance | | +| main.rs:39:5:39:5 | [post] f : ... => .. [captured capt] | main.rs:40:10:40:13 | capt | provenance | | +| main.rs:39:5:39:5 | [post] f : ... => .. [captured capt] | main.rs:44:5:44:5 | g [captured capt] | provenance | | | main.rs:44:5:44:5 | g [captured capt] | main.rs:42:14:42:17 | capt | provenance | | | main.rs:47:29:49:1 | { ... } | main.rs:57:10:57:12 | f(...) | provenance | | | main.rs:48:5:48:14 | source(...) | main.rs:47:29:49:1 | { ... } | provenance | | @@ -30,6 +30,31 @@ edges | main.rs:77:13:77:22 | f(...) | main.rs:77:9:77:9 | b | provenance | | | main.rs:77:21:77:21 | a | main.rs:66:24:66:32 | ...: i64 | provenance | | | main.rs:77:21:77:21 | a | main.rs:77:13:77:22 | f(...) | provenance | | +| main.rs:81:28:81:33 | ...: i64 | main.rs:82:7:82:7 | x | provenance | | +| main.rs:81:28:81:33 | ...: i64 | main.rs:82:7:82:7 | x | provenance | | +| main.rs:81:28:81:33 | ...: i64 | main.rs:82:7:82:7 | x | provenance | | +| main.rs:82:7:82:7 | x | main.rs:87:12:87:12 | ... | provenance | | +| main.rs:82:7:82:7 | x | main.rs:89:12:89:12 | ... | provenance | | +| main.rs:82:7:82:7 | x | main.rs:99:17:99:17 | ... | provenance | | +| main.rs:82:7:82:7 | x | main.rs:101:17:101:17 | ... | provenance | | +| main.rs:86:9:86:9 | a | main.rs:87:24:87:24 | a | provenance | | +| main.rs:86:13:86:22 | source(...) | main.rs:86:9:86:9 | a | provenance | | +| main.rs:87:12:87:12 | ... | main.rs:87:20:87:20 | x | provenance | | +| main.rs:87:24:87:24 | a | main.rs:81:28:81:33 | ...: i64 | provenance | | +| main.rs:88:9:88:9 | b | main.rs:89:24:89:24 | b | provenance | | +| main.rs:88:13:88:22 | source(...) | main.rs:88:9:88:9 | b | provenance | | +| main.rs:89:12:89:12 | ... | main.rs:89:20:89:20 | x | provenance | | +| main.rs:89:24:89:24 | b | main.rs:81:28:81:33 | ...: i64 | provenance | | +| main.rs:93:33:93:38 | ...: i64 | main.rs:94:14:94:14 | x | provenance | | +| main.rs:94:14:94:14 | x | main.rs:81:28:81:33 | ...: i64 | provenance | | +| main.rs:98:9:98:9 | a | main.rs:99:29:99:29 | a | provenance | | +| main.rs:98:13:98:22 | source(...) | main.rs:98:9:98:9 | a | provenance | | +| main.rs:99:17:99:17 | ... | main.rs:99:25:99:25 | x | provenance | | +| main.rs:99:29:99:29 | a | main.rs:93:33:93:38 | ...: i64 | provenance | | +| main.rs:100:9:100:9 | b | main.rs:101:29:101:29 | b | provenance | | +| main.rs:100:13:100:22 | source(...) | main.rs:100:9:100:9 | b | provenance | | +| main.rs:101:17:101:17 | ... | main.rs:101:25:101:25 | x | provenance | | +| main.rs:101:29:101:29 | b | main.rs:93:33:93:38 | ...: i64 | provenance | | nodes | main.rs:10:20:10:52 | if cond {...} else {...} | semmle.label | if cond {...} else {...} | | main.rs:10:30:10:39 | source(...) | semmle.label | source(...) | @@ -48,7 +73,7 @@ nodes | main.rs:29:21:29:21 | a | semmle.label | a | | main.rs:30:10:30:10 | b | semmle.label | b | | main.rs:37:16:37:25 | source(...) | semmle.label | source(...) | -| main.rs:39:5:39:5 | [post] f [captured capt] | semmle.label | [post] f [captured capt] | +| main.rs:39:5:39:5 | [post] f : ... => .. [captured capt] | semmle.label | [post] f : ... => .. [captured capt] | | main.rs:40:10:40:13 | capt | semmle.label | capt | | main.rs:42:14:42:17 | capt | semmle.label | capt | | main.rs:44:5:44:5 | g [captured capt] | semmle.label | g [captured capt] | @@ -68,6 +93,34 @@ nodes | main.rs:77:13:77:22 | f(...) | semmle.label | f(...) | | main.rs:77:21:77:21 | a | semmle.label | a | | main.rs:78:10:78:10 | b | semmle.label | b | +| main.rs:81:28:81:33 | ...: i64 | semmle.label | ...: i64 | +| main.rs:81:28:81:33 | ...: i64 | semmle.label | ...: i64 | +| main.rs:81:28:81:33 | ...: i64 | semmle.label | ...: i64 | +| main.rs:82:7:82:7 | x | semmle.label | x | +| main.rs:82:7:82:7 | x | semmle.label | x | +| main.rs:82:7:82:7 | x | semmle.label | x | +| main.rs:86:9:86:9 | a | semmle.label | a | +| main.rs:86:13:86:22 | source(...) | semmle.label | source(...) | +| main.rs:87:12:87:12 | ... | semmle.label | ... | +| main.rs:87:20:87:20 | x | semmle.label | x | +| main.rs:87:24:87:24 | a | semmle.label | a | +| main.rs:88:9:88:9 | b | semmle.label | b | +| main.rs:88:13:88:22 | source(...) | semmle.label | source(...) | +| main.rs:89:12:89:12 | ... | semmle.label | ... | +| main.rs:89:20:89:20 | x | semmle.label | x | +| main.rs:89:24:89:24 | b | semmle.label | b | +| main.rs:93:33:93:38 | ...: i64 | semmle.label | ...: i64 | +| main.rs:94:14:94:14 | x | semmle.label | x | +| main.rs:98:9:98:9 | a | semmle.label | a | +| main.rs:98:13:98:22 | source(...) | semmle.label | source(...) | +| main.rs:99:17:99:17 | ... | semmle.label | ... | +| main.rs:99:25:99:25 | x | semmle.label | x | +| main.rs:99:29:99:29 | a | semmle.label | a | +| main.rs:100:9:100:9 | b | semmle.label | b | +| main.rs:100:13:100:22 | source(...) | semmle.label | source(...) | +| main.rs:101:17:101:17 | ... | semmle.label | ... | +| main.rs:101:25:101:25 | x | semmle.label | x | +| main.rs:101:29:101:29 | b | semmle.label | b | subpaths | main.rs:29:21:29:21 | a | main.rs:27:20:27:23 | ... | main.rs:27:26:27:52 | if cond {...} else {...} | main.rs:29:13:29:22 | f(...) | | main.rs:77:21:77:21 | a | main.rs:66:24:66:32 | ...: i64 | main.rs:66:42:72:1 | { ... } | main.rs:77:13:77:22 | f(...) | @@ -81,3 +134,9 @@ testFailures | main.rs:52:10:52:13 | data | main.rs:62:13:62:22 | source(...) | main.rs:52:10:52:13 | data | $@ | main.rs:62:13:62:22 | source(...) | source(...) | | main.rs:57:10:57:12 | f(...) | main.rs:48:5:48:14 | source(...) | main.rs:57:10:57:12 | f(...) | $@ | main.rs:48:5:48:14 | source(...) | source(...) | | main.rs:78:10:78:10 | b | main.rs:76:13:76:22 | source(...) | main.rs:78:10:78:10 | b | $@ | main.rs:76:13:76:22 | source(...) | source(...) | +| main.rs:87:20:87:20 | x | main.rs:86:13:86:22 | source(...) | main.rs:87:20:87:20 | x | $@ | main.rs:86:13:86:22 | source(...) | source(...) | +| main.rs:89:20:89:20 | x | main.rs:88:13:88:22 | source(...) | main.rs:89:20:89:20 | x | $@ | main.rs:88:13:88:22 | source(...) | source(...) | +| main.rs:99:25:99:25 | x | main.rs:98:13:98:22 | source(...) | main.rs:99:25:99:25 | x | $@ | main.rs:98:13:98:22 | source(...) | source(...) | +| main.rs:99:25:99:25 | x | main.rs:100:13:100:22 | source(...) | main.rs:99:25:99:25 | x | $@ | main.rs:100:13:100:22 | source(...) | source(...) | +| main.rs:101:25:101:25 | x | main.rs:98:13:98:22 | source(...) | main.rs:101:25:101:25 | x | $@ | main.rs:98:13:98:22 | source(...) | source(...) | +| main.rs:101:25:101:25 | x | main.rs:100:13:100:22 | source(...) | main.rs:101:25:101:25 | x | $@ | main.rs:100:13:100:22 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/lambdas/main.rs b/rust/ql/test/library-tests/dataflow/lambdas/main.rs index 252b132ec744..66295f004a22 100644 --- a/rust/ql/test/library-tests/dataflow/lambdas/main.rs +++ b/rust/ql/test/library-tests/dataflow/lambdas/main.rs @@ -78,6 +78,30 @@ fn function_flows_through() { sink(b); // $ hasValueFlow=56 } +fn apply(f: F, x: i64) { + f(x); +} + +fn test_apply() { + let a = source(77); + apply(|x| sink(x), a); // $ hasValueFlow=77 + let b = source(78); + apply(|x| sink(x), b); // $ hasValueFlow=78 + apply(|x| sink(x), 0); +} + +fn apply_wrap(f: F, x: i64) { + apply(f, x); +} + +fn test_apply_wrap() { + let a = source(79); + apply_wrap(|x| sink(x), a); // $ hasValueFlow=79 $ SPURIOUS: hasValueFlow=80 + let b = source(80); + apply_wrap(|x| sink(x), b); // $ hasValueFlow=80 $ SPURIOUS: hasValueFlow=79 + apply_wrap(|x| sink(x), 0); +} + fn main() { closure_flow_out(); closure_flow_in(); @@ -86,4 +110,6 @@ fn main() { function_flow_in(); function_flow_out(); function_flows_through(); + test_apply(); + test_apply_wrap(); } diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index b0c11770a8e6..e220a769eceb 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -927,9 +927,6 @@ readStep | main.rs:480:25:480:29 | names | file://:0:0:0:0 | element | main.rs:480:9:480:20 | TuplePat | | main.rs:482:41:482:67 | [post] \|...\| ... | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | [post] default_name | | main.rs:482:44:482:55 | [post] default_name [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name | -| main.rs:482:44:482:55 | [post] default_name [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name [implicit deref 0 in state after deref] | -| main.rs:482:44:482:55 | [post] default_name [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name | -| main.rs:482:44:482:55 | default_name [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit deref 0 in state after deref] | | main.rs:482:44:482:55 | this | main.rs:479:9:479:20 | captured default_name | main.rs:482:44:482:55 | default_name | | main.rs:483:18:483:18 | [post] n [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n | | main.rs:506:13:506:13 | [post] a [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a | @@ -1056,8 +1053,6 @@ storeStep | main.rs:479:24:479:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | source(...) [implicit borrow] | | main.rs:482:41:482:67 | default_name | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | \|...\| ... | | main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit borrow] | -| main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit deref 0 in state after borrow] | -| main.rs:482:44:482:55 | default_name [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit borrow] | | main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | n [implicit borrow] | | main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | a [implicit borrow] | | main.rs:507:13:507:13 | b | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | b [implicit deref 0 in state after borrow] | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index 8ca58acd1d06..e69de29bb2d1 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +0,0 @@ -multipleResolvedTargets -| test.rs:389:30:389:67 | pinned.poll_read(...) | -| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) | -| test.rs:423:27:423:71 | ... .poll_fill_buf(...) | -| test.rs:447:30:447:67 | pinned.poll_read(...) | -| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) | diff --git a/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected index 255af4cc86ed..763bff966d3f 100644 --- a/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected @@ -100,7 +100,9 @@ edges | main.rs:161:10:161:18 | source(...) | main.rs:161:10:161:25 | ... .shr(...) | provenance | MaD:30 | | main.rs:162:19:162:27 | source(...) | main.rs:162:10:162:28 | 1i64.shr(...) | provenance | MaD:30 | | main.rs:164:10:164:18 | source(...) | main.rs:164:10:164:30 | ... .bitor(...) | provenance | MaD:19 | +| main.rs:165:10:165:18 | source(...) | main.rs:165:10:165:27 | ... .bitor(...) | provenance | MaD:19 | | main.rs:166:21:166:29 | source(...) | main.rs:166:10:166:30 | 1i64.bitor(...) | provenance | MaD:19 | +| main.rs:167:18:167:26 | source(...) | main.rs:167:10:167:27 | 1.bitor(...) | provenance | MaD:19 | | main.rs:170:5:170:5 | [post] a | main.rs:171:5:171:5 | a | provenance | | | main.rs:170:5:170:5 | [post] a | main.rs:172:5:172:5 | a | provenance | | | main.rs:170:5:170:5 | [post] a | main.rs:173:5:173:5 | a | provenance | | @@ -351,8 +353,12 @@ nodes | main.rs:162:19:162:27 | source(...) | semmle.label | source(...) | | main.rs:164:10:164:18 | source(...) | semmle.label | source(...) | | main.rs:164:10:164:30 | ... .bitor(...) | semmle.label | ... .bitor(...) | +| main.rs:165:10:165:18 | source(...) | semmle.label | source(...) | +| main.rs:165:10:165:27 | ... .bitor(...) | semmle.label | ... .bitor(...) | | main.rs:166:10:166:30 | 1i64.bitor(...) | semmle.label | 1i64.bitor(...) | | main.rs:166:21:166:29 | source(...) | semmle.label | source(...) | +| main.rs:167:10:167:27 | 1.bitor(...) | semmle.label | 1.bitor(...) | +| main.rs:167:18:167:26 | source(...) | semmle.label | source(...) | | main.rs:170:5:170:5 | [post] a | semmle.label | [post] a | | main.rs:170:18:170:26 | source(...) | semmle.label | source(...) | | main.rs:171:5:171:5 | [post] a | semmle.label | [post] a | @@ -516,7 +522,9 @@ testFailures | main.rs:161:10:161:25 | ... .shr(...) | main.rs:161:10:161:18 | source(...) | main.rs:161:10:161:25 | ... .shr(...) | $@ | main.rs:161:10:161:18 | source(...) | source(...) | | main.rs:162:10:162:28 | 1i64.shr(...) | main.rs:162:19:162:27 | source(...) | main.rs:162:10:162:28 | 1i64.shr(...) | $@ | main.rs:162:19:162:27 | source(...) | source(...) | | main.rs:164:10:164:30 | ... .bitor(...) | main.rs:164:10:164:18 | source(...) | main.rs:164:10:164:30 | ... .bitor(...) | $@ | main.rs:164:10:164:18 | source(...) | source(...) | +| main.rs:165:10:165:27 | ... .bitor(...) | main.rs:165:10:165:18 | source(...) | main.rs:165:10:165:27 | ... .bitor(...) | $@ | main.rs:165:10:165:18 | source(...) | source(...) | | main.rs:166:10:166:30 | 1i64.bitor(...) | main.rs:166:21:166:29 | source(...) | main.rs:166:10:166:30 | 1i64.bitor(...) | $@ | main.rs:166:21:166:29 | source(...) | source(...) | +| main.rs:167:10:167:27 | 1.bitor(...) | main.rs:167:18:167:26 | source(...) | main.rs:167:10:167:27 | 1.bitor(...) | $@ | main.rs:167:18:167:26 | source(...) | source(...) | | main.rs:176:10:176:10 | a | main.rs:170:18:170:26 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:170:18:170:26 | source(...) | source(...) | | main.rs:176:10:176:10 | a | main.rs:171:18:171:26 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:171:18:171:26 | source(...) | source(...) | | main.rs:176:10:176:10 | a | main.rs:172:18:172:26 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:172:18:172:26 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/taint/main.rs b/rust/ql/test/library-tests/dataflow/taint/main.rs index 07770cc71189..05dbd1eb702f 100644 --- a/rust/ql/test/library-tests/dataflow/taint/main.rs +++ b/rust/ql/test/library-tests/dataflow/taint/main.rs @@ -162,9 +162,9 @@ fn std_ops() { sink(1i64.shr(source(2))); // $ hasTaintFlow=2 sink(source(1).bitor(2i64)); // $ hasTaintFlow=1 - sink(source(1).bitor(2)); // $ MISSING: hasTaintFlow=1 + sink(source(1).bitor(2)); // $ hasTaintFlow=1 sink(1i64.bitor(source(2))); // $ hasTaintFlow=2 - sink(1.bitor(source(2))); // $ MISSING: hasTaintFlow=2 + sink(1.bitor(source(2))); // $ hasTaintFlow=2 let mut a: i64 = 1; a.add_assign(source(2)); 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 a753b733ba38..ffc2576a05eb 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,4 +1,5 @@ multipleResolvedTargets | main.rs:2223:9:2223:31 | ... .my_add(...) | | main.rs:2225:9:2225:29 | ... .my_add(...) | -| main.rs:2733:13:2733:17 | x.f() | +| main.rs:2740:13:2740: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 cc756a6b2678..635b169bf96b 100644 --- a/rust/ql/test/library-tests/type-inference/closure.rs +++ b/rust/ql/test/library-tests/type-inference/closure.rs @@ -63,7 +63,7 @@ mod fn_once_trait { }; let _r = apply(f, true); // $ target=apply type=_r:i64 - let f = |x| x + 1; // $ MISSING: type=x:i64 target=add + let f = |x| x + 1; // $ type=x:i64 $ MISSING: target=add let _r2 = apply_two(f); // $ target=apply_two certainType=_r2:i64 } } @@ -100,7 +100,7 @@ mod fn_mut_trait { }; let _r = apply(f, true); // $ target=apply type=_r:i64 - let f = |x| x + 1; // $ MISSING: type=x:i64 target=add + let f = |x| x + 1; // $ type=x:i64 $ MISSING: target=add let _r2 = apply_two(f); // $ target=apply_two certainType=_r2:i64 } } @@ -137,7 +137,7 @@ mod fn_trait { }; let _r = apply(f, true); // $ target=apply type=_r:i64 - let f = |x| x + 1; // $ MISSING: type=x:i64 target=add + let f = |x| x + 1; // $ type=x:i64 $ MISSING: target=add let _r2 = apply_two(f); // $ target=apply_two certainType=_r2:i64 } } @@ -152,3 +152,98 @@ mod dyn_fn_once { let _r2 = apply_boxed(Box::new(|_: i64| true), 3); // $ target=apply_boxed target=new type=_r2:bool } } + +mod closure_infer_param { + fn apply1 i64>(f: F, a: i64) -> i64 { + f(a) + } + + fn apply2(f: impl Fn(i64) -> i64, a: i64) -> i64 { + f(a) + } + + fn apply3(f: &dyn Fn(i64) -> i64, a: i64) -> i64 { + f(a) + } + + fn apply4 i64>(mut f: F, a: i64) -> i64 { + f(a) + } + + fn apply5(f: &mut dyn FnMut(i64) -> i64, a: i64) -> i64 { + f(a) + } + + fn apply6(f: impl Fn(T) -> i64, a: T) -> i64 { + f(a) + } + + fn apply7 i64>(mut f: F, a: T) -> i64 { + f(a) + } + + fn test() { + let f = |x| x; // $ type=x:i64 + let _r = apply1(f, 1i64); // $ target=apply1 + + let f = |x| x; // $ type=x:i64 + let _r = apply2(f, 2i64); // $ target=apply2 + + let f = |x| x; // $ type=x:i64 + let _r = apply3(&f, 3i64); // $ target=apply3 + + let f = |x| x; // $ type=x:i64 + let _r = apply4(f, 4i64); // $ target=apply4 + + let mut f = |x| x; // $ MISSING: type=x:i64 + let _r = apply5(&mut f, 5i64); // $ target=apply5 + + let f = |x| x; // $ type=x:i64 + let _r = apply6(f, 6i64); // $ target=apply6 + + let f = |x| x; // $ type=x:i64 + let _r = apply7(f, 7i64); // $ target=apply7 + } +} + +mod implicit_deref { + use std::ops::Deref; + + struct S(T); + + impl Deref for S { + type Target = dyn Fn(T) -> bool; + + fn deref(&self) -> &Self::Target { + &|_| false + } + } + + pub fn test() { + let x = 0i64; + let v = Default::default(); // $ type=v:i64 target=default + let s = S(v); + let _ret = s(x); // $ type=_ret:bool + + let x = 0i32; + let v = Default::default(); // $ type=v:i32 target=default + let s = S(v); + let _ret = s(x); // $ type=_ret:bool + let s_ref = &s; + // The call below incorrectly resolves to + // `impl FnOnce for &F` from + // https://doc.rust-lang.org/std/ops/trait.FnOnce.html#impl-FnOnce%3CA%3E-for-%26F + // because `s_ref` gets an implicit borrow `&&S`, and then we incorrectly + // conclude that `&S` satisfies the blanket constraint `Fn` because of the + // `impl FnOnce for &F` implementation (we do not currently identify that + // `&S` does not satisfy `Fn`) + let _ret = s_ref(x); // $ MISSING: type=_ret:bool + + // The call below is not an implicit deref, instead it will target + // `impl FnOnce for &F` from + // https://doc.rust-lang.org/std/ops/trait.FnOnce.html#impl-FnOnce%3CA%3E-for-%26F + // and we currently cannot handle inferring the output type + let c = |x| x; // $ MISSING: type=x:i64 + (&c)(x); // $ MISSING: type=_:i64 + } +} diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index f342d3897f4d..ecb4816ebb01 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2259,7 +2259,7 @@ mod loops { // for loops with arrays for i in [1, 2, 3] {} // $ type=i:i32 - for i in [1, 2, 3].map(|x| x + 1) {} // $ target=map MISSING: type=i:i32 + for i in [1, 2, 3].map(|x| x + 1) {} // $ target=map target=add type=i:i32 for i in [1, 2, 3].into_iter() {} // $ target=into_iter type=i:i32 let vals1 = [1u8, 2, 3]; // $ type=vals1:TArray.u8 @@ -2643,6 +2643,10 @@ mod context_typed { fn f(self) {} } + fn free_function() -> T { + Default::default() // $ target=default + } + pub fn f() { let x = None; // $ type=x:T.i32 let x: Option = x; @@ -2693,6 +2697,9 @@ mod context_typed { let s = Default::default(); // $ target=default type=s:S S::f(s); // $ target=f + + let z = free_function(); // $ target=free_function type=z:i32 + x.push(z); // $ target=push } } @@ -2752,6 +2759,30 @@ mod dereference; mod dyn_type; mod regressions; +mod arg_trait_bounds { + struct Gen(T); + + trait Container { + fn get_input(&self) -> T; + } + + fn my_get>(c: &T) -> bool { + c.get_input() == 42 // $ target=get_input target=eq + } + + impl Container for Gen { + fn get_input(&self) -> GT { + self.0 // $ fieldof=Gen + } + } + + fn test() { + let v = Default::default(); // $ type=v:i64 target=default + let g = Gen(v); + let _ = my_get(&g); // $ target=my_get + } +} + fn main() { field_access::f(); // $ target=f method_impl::f(); // $ target=f diff --git a/rust/ql/test/library-tests/type-inference/overloading.rs b/rust/ql/test/library-tests/type-inference/overloading.rs index 0bf6598c1d12..06353a12c8f2 100644 --- a/rust/ql/test/library-tests/type-inference/overloading.rs +++ b/rust/ql/test/library-tests/type-inference/overloading.rs @@ -400,3 +400,124 @@ mod from_default { x } } + +mod inherent_before_trait { + struct S(T); + + trait Trait { + fn foo(&self); + fn bar(&self); + } + + impl S { + // S::foo + fn foo(x: &Self) {} + + // S::bar + fn bar(&self) {} + } + + impl Trait for S { + // _as_Trait>::foo + fn foo(&self) { + S::foo(self); // $ MISSING: target=S::foo + S::::foo(self); // $ target=S::foo + self.foo() // $ target=_as_Trait>::foo + } + + // _as_Trait>::bar + fn bar(&self) { + S::bar(self); // $ target=S::bar + S::::bar(self); // $ target=S::bar + self.bar() // $ target=S::bar + } + } + + impl Trait for S { + // _as_Trait>::foo + fn foo(&self) { + // `S::foo(self);` is not valid + S::::foo(self); // $ target=_as_Trait>::foo + self.foo() // $ target=_as_Trait>::foo + } + + // _as_Trait>::bar + fn bar(&self) { + // `S::bar(self);` is not valid + S::::bar(self); // $ target=_as_Trait>::bar + self.bar() // $ target=_as_Trait>::bar + } + } +} + +mod trait_bound_impl_overlap { + trait MyTrait { + fn f(&self) -> T; + } + + trait MyTrait2 { + type Output; + + fn f(&self, x: T) -> Self::Output; + } + + struct S(T); + + impl MyTrait for S { + fn f(&self) -> i32 { + 0 + } + } + + impl MyTrait for S { + fn f(&self) -> i64 { + 0 + } + } + + impl MyTrait2> for S { + type Output = i32; + + fn f(&self, x: S) -> Self::Output { + 0 + } + } + + impl MyTrait2> for S { + type Output = >>::Output; + + fn f(&self, x: S) -> Self::Output { + 0 + } + } + + impl MyTrait2> for S { + type Output = i64; + + fn f(&self, x: S) -> Self::Output { + 0 + } + } + + fn call_f>(x: T2) -> T1 { + x.f() // $ target=f + } + + fn call_f2>(x: T1, y: T2) -> T2::Output { + y.f(x) // $ target=f + } + + fn test() { + let x = S(0); + let y = call_f(x); // $ target=call_f type=y:i32 + let z: i32 = y; + + let x = S(0); + let y = call_f::(x); // $ target=call_f type=y:i32 + + let x = S(0); + let y = call_f2(S(0i32), x); // $ target=call_f2 type=y:i32 + let x = S(0); + let y = call_f2(S(0i64), x); // $ target=call_f2 type=y:i64 + } +} diff --git a/rust/ql/test/library-tests/type-inference/regressions.rs b/rust/ql/test/library-tests/type-inference/regressions.rs index 9365588c64ad..5c830bb3db2f 100644 --- a/rust/ql/test/library-tests/type-inference/regressions.rs +++ b/rust/ql/test/library-tests/type-inference/regressions.rs @@ -74,3 +74,108 @@ mod regression2 { let x = s1 - &s2; // $ target=S1SubRefS2 type=x:S2 } } + +mod regression3 { + trait SomeTrait {} + + trait MyFrom { + fn my_from(value: T) -> Self; + } + + impl MyFrom for T { + fn my_from(s: T) -> Self { + s + } + } + + impl MyFrom for Option { + fn my_from(val: T) -> Option { + Some(val) + } + } + + pub struct S(Ts); + + pub fn f(x: T2) -> T2 + where + T2: SomeTrait + MyFrom>, + Option: MyFrom, + { + let y = MyFrom::my_from(x); // $ target=my_from + let z = MyFrom::my_from(y); // $ target=my_from + z + } +} + +mod regression4 { + trait MyTrait { + // MyTrait::m + fn m(self); + } + + impl MyTrait for &T { + // RefAsMyTrait::m + fn m(self) {} + } + + struct S(T); + + impl S { + fn call_m(self) + where + T: MyTrait, + { + let S(s) = self; + s.m(); // $ target=MyTrait::m + } + } +} + +mod regression5 { + struct S1; + struct S2(T2); + + impl From<&S1> for S2 { + fn from(_: &S1) -> Self { + S2(S1) + } + } + + impl From for S2 { + fn from(t: T) -> Self { + S2(t) + } + } + + fn foo() -> S2 { + let x = S1.into(); // $ target=into + x // $ SPURIOUS: type=x:T2.TRef.S1 -- happens because we currently do not consider the two `impl` blocks to be siblings + } +} + +mod regression6 { + use std::ops::Add; + struct S(T); + + impl Add for S { + type Output = Self; + + // add1 + fn add(self, _rhs: Self) -> Self::Output { + self + } + } + + impl Add for S { + type Output = Self; + + // add2 + fn add(self, _rhs: T) -> Self::Output { + self + } + } + + fn foo() { + let x = S(0) + S(1); // $ target=add1 $ SPURIOUS: target=add2 type=x:T.T.i32 + } +} 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 d3ec61e96034..5e870ae6ca5d 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -209,15 +209,15 @@ inferCertainType | associated_types.rs:454:24:454:28 | SelfParam | TRef | associated_types.rs:452:5:455:5 | Self [trait Subtrait] | | associated_types.rs:463:23:463:27 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:463:23:463:27 | SelfParam | TRef | associated_types.rs:457:5:467:5 | Self [trait Subtrait2] | -| associated_types.rs:463:30:463:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:463:48:463:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:463:30:463:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | +| associated_types.rs:463:48:463:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | | associated_types.rs:463:66:466:9 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:464:13:464:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:464:13:464:16 | self | TRef | associated_types.rs:457:5:467:5 | Self [trait Subtrait2] | -| associated_types.rs:464:22:464:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:464:22:464:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | | associated_types.rs:465:13:465:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:465:13:465:16 | self | TRef | associated_types.rs:457:5:467:5 | Self [trait Subtrait2] | -| associated_types.rs:465:22:465:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:465:22:465:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | | 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 | @@ -545,6 +545,14 @@ inferCertainType | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | closure.rs:4:19:31:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn 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 | @@ -552,19 +560,47 @@ inferCertainType | 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:23:9:34 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | 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: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 | +| closure.rs:14:13:14:20 | add_zero | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:14:13:14:20 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:14:13:14:20 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:14:24:14:33 | \|...\| n | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:14:24:14:33 | \|...\| n | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:14:24:14:33 | \|...\| n | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:14:25:14:25 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:33:14:33 | n | | {EXTERNAL LOCATION} | i64 | +| 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:17:13:17:21 | _get_bool | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:17:25:21:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:24:13:24:14 | id | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:24:18:24:22 | \|...\| b | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:25:18:25:19 | id | | {EXTERNAL LOCATION} | dyn Fn | +| 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:19:28:23 | \|...\| b | | {EXTERNAL LOCATION} | dyn Fn | | 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} | () | @@ -573,23 +609,41 @@ inferCertainType | 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} | () | @@ -598,23 +652,41 @@ inferCertainType | 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} | () | @@ -623,16 +695,30 @@ inferCertainType | 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 | @@ -641,6 +727,8 @@ inferCertainType | 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 | @@ -659,8 +747,157 @@ inferCertainType | 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: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: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: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: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: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 | | 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} | & | @@ -2259,6 +2496,7 @@ inferCertainType | main.rs:1340:40:1345:5 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1340:40:1345:5 | { ... } | E | main.rs:1320:5:1321:14 | S2 | | main.rs:1340:40:1345:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | +| main.rs:1343:24:1343:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:1349:30:1349:34 | input | | {EXTERNAL LOCATION} | Result | | main.rs:1349:30:1349:34 | input | E | main.rs:1317:5:1318:14 | S1 | | main.rs:1349:30:1349:34 | input | T | main.rs:1349:20:1349:27 | T | @@ -2268,6 +2506,7 @@ inferCertainType | main.rs:1350:21:1350:25 | input | | {EXTERNAL LOCATION} | Result | | main.rs:1350:21:1350:25 | input | E | main.rs:1317:5:1318:14 | S1 | | main.rs:1350:21:1350:25 | input | T | main.rs:1349:20:1349:27 | T | +| main.rs:1351:49:1354:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:1352:22:1352:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1352:22:1352:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1352:22:1352:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | @@ -3182,6 +3421,7 @@ inferCertainType | main.rs:2261:28:2261:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2262:9:2262:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2262:18:2262:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2262:32:2262:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:2262:43:2262:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2263:9:2263:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2263:18:2263:26 | [...] | | {EXTERNAL LOCATION} | [;] | @@ -3630,130 +3870,150 @@ inferCertainType | main.rs:2633:29:2633:29 | a | | {EXTERNAL LOCATION} | () | | main.rs:2643:14:2643:17 | SelfParam | | main.rs:2639:5:2640:13 | S | | main.rs:2643:20:2643:21 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2646:16:2696:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2648:13:2648:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2648:13:2648:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2652:26:2652:28 | opt | | {EXTERNAL LOCATION} | Option | -| main.rs:2652:26:2652:28 | opt | T | main.rs:2652:23:2652:23 | T | -| main.rs:2652:42:2652:42 | x | | main.rs:2652:23:2652:23 | T | -| main.rs:2652:48:2652:49 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2655:9:2655:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2662:13:2662:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2662:17:2662:39 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2663:13:2663:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2663:13:2663:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:13:2663:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2663:40:2663:40 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2664:13:2664:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2664:13:2664:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2664:17:2664:52 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2664:17:2664:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2666:13:2666:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2666:13:2666:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:17:2668:9 | ...::B::<...> {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2666:17:2668:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2667:20:2667:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2670:29:2670:29 | e | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2670:29:2670:29 | e | T1 | main.rs:2670:26:2670:26 | T | -| main.rs:2670:29:2670:29 | e | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2670:53:2670:53 | x | | main.rs:2670:26:2670:26 | T | -| main.rs:2670:59:2670:60 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2673:13:2673:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2673:17:2675:9 | ...::B {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2674:20:2674:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2676:9:2676:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2676:23:2676:23 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2679:13:2679:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2679:13:2679:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2679:13:2679:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2683:29:2683:31 | res | | {EXTERNAL LOCATION} | Result | -| main.rs:2683:29:2683:31 | res | E | main.rs:2683:26:2683:26 | E | -| main.rs:2683:29:2683:31 | res | T | main.rs:2683:23:2683:23 | T | -| main.rs:2683:48:2683:48 | x | | main.rs:2683:26:2683:26 | E | -| main.rs:2683:54:2683:55 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2686:9:2686:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2686:23:2686:27 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2688:17:2688:17 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2688:17:2688:17 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:21:2688:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2688:21:2688:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2689:9:2689:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2689:9:2689:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2692:9:2692:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2692:9:2692:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2695:9:2695:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2702:14:2702:17 | SelfParam | | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2705:14:2705:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2705:14:2705:18 | SelfParam | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2705:21:2705:25 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2705:21:2705:25 | other | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2705:44:2707:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2705:44:2707:9 | { ... } | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2706:13:2706:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2706:13:2706:16 | self | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2712:14:2712:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | -| main.rs:2712:28:2714:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | i32 | -| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | usize | -| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | usize | -| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2726:14:2726:17 | SelfParam | TRef | main.rs:2724:10:2724:10 | T | -| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2726:28:2728:9 | { ... } | TRef | main.rs:2724:10:2724:10 | T | -| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2727:13:2727:16 | self | TRef | main.rs:2724:10:2724:10 | T | -| main.rs:2731:25:2735:5 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2737:12:2745:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2738:13:2738:13 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2739:13:2739:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2739:17:2739:18 | &1 | | {EXTERNAL LOCATION} | & | -| main.rs:2740:17:2740:17 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2740:21:2740:21 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2743:13:2743:13 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2744:23:2744:23 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2755:11:2790:1 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2756:5:2756:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2757:5:2757:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2758:5:2758:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2758:20:2758:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2758:41:2758:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2759:5:2759:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2760:5:2760:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2761:5:2761:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2762:5:2762:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2763:5:2763:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2764:5:2764:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2765:5:2765:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2766:5:2766:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2767:5:2767:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2768:5:2768:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2769:5:2769:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2770:5:2770:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2771:5:2771:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2772:5:2772:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2773:5:2773:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2774:5:2774:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:2774:5:2774:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:2775:5:2775:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2776:5:2776:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2777:5:2777:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2778:5:2778:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2779:5:2779:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2780:5:2780:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2781:5:2781:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2782:5:2782:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2783:5:2783:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2784:5:2784:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2785:5:2785:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2786:5:2786:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2787:5:2787:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2788:5:2788:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2788:5:2788:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2788:5:2788:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2788:5:2788:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2788:16:2788:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2789:5:2789:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2646:41:2648:5 | { ... } | | main.rs:2646:22:2646:31 | T | +| main.rs:2650:16:2703:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2652:13:2652:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2652:13:2652:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2656:26:2656:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2656:26:2656:28 | opt | T | main.rs:2656:23:2656:23 | T | +| main.rs:2656:42:2656:42 | x | | main.rs:2656:23:2656:23 | T | +| main.rs:2656:48:2656:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2659:9:2659:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2666:13:2666:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2666:17:2666:39 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2667:13:2667:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2667:13:2667:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2667:13:2667:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2667:40:2667:40 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2668:13:2668:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2668:13:2668:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2668:17:2668:52 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2668:17:2668:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2670:13:2670:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2670:13:2670:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2670:17:2672:9 | ...::B::<...> {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2671:20:2671:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2674:29:2674:29 | e | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2674:29:2674:29 | e | T1 | main.rs:2674:26:2674:26 | T | +| main.rs:2674:29:2674:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2674:53:2674:53 | x | | main.rs:2674:26:2674:26 | T | +| main.rs:2674:59:2674:60 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2677:13:2677:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2677:17:2679:9 | ...::B {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2678:20:2678:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2680:9:2680:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2680:23:2680:23 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2683:13:2683:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2683:13:2683:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2683:13:2683:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:29:2687:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:2687:29:2687:31 | res | E | main.rs:2687:26:2687:26 | E | +| main.rs:2687:29:2687:31 | res | T | main.rs:2687:23:2687:23 | T | +| main.rs:2687:48:2687:48 | x | | main.rs:2687:26:2687:26 | E | +| main.rs:2687:54:2687:55 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2690:9:2690:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2690:23:2690:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:2692:17:2692:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:17:2692:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2692:21:2692:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:21:2692:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2693:9:2693:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2693:9:2693:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2696:9:2696:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2696:9:2696:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2699:9:2699:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2702:9:2702:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2702:9:2702:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2709:14:2709:17 | SelfParam | | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2712:14:2712:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2712:14:2712:18 | SelfParam | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2712:21:2712:25 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2712:21:2712:25 | other | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2712:44:2714:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2712:44:2714:9 | { ... } | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2713:13:2713:16 | self | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | +| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | usize | +| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | usize | +| main.rs:2733:14:2733:17 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2733:14:2733:17 | SelfParam | TRef | main.rs:2731:10:2731:10 | T | +| main.rs:2733:28:2735:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2733:28:2735:9 | { ... } | TRef | main.rs:2731:10:2731:10 | T | +| main.rs:2734:13:2734:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2734:13:2734:16 | self | TRef | main.rs:2731:10:2731:10 | T | +| main.rs:2738:25:2742:5 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2744:12:2752:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2745:13:2745:13 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2746:13:2746:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2746:17:2746:18 | &1 | | {EXTERNAL LOCATION} | & | +| main.rs:2747:17:2747:17 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2747:21:2747:21 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2750:13:2750:13 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2751:23:2751:23 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2766:22:2766:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2766:22:2766:26 | SelfParam | TRef | main.rs:2765:5:2767:5 | Self [trait Container] | +| main.rs:2769:34:2769:34 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2769:34:2769:34 | c | TRef | main.rs:2769:15:2769:31 | T | +| main.rs:2769:49:2771:5 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2770:9:2770:9 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2770:9:2770:9 | c | TRef | main.rs:2769:15:2769:31 | T | +| main.rs:2774:22:2774:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2774:22:2774:26 | SelfParam | TRef | main.rs:2763:5:2763:21 | Gen | +| main.rs:2774:22:2774:26 | SelfParam | TRef.T | main.rs:2773:10:2773:17 | GT | +| main.rs:2774:35:2776:9 | { ... } | | main.rs:2773:10:2773:17 | GT | +| main.rs:2775:13:2775:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2775:13:2775:16 | self | TRef | main.rs:2763:5:2763:21 | Gen | +| main.rs:2775:13:2775:16 | self | TRef.T | main.rs:2773:10:2773:17 | GT | +| main.rs:2779:15:2783:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2782:17:2782:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2782:24:2782:25 | &g | | {EXTERNAL LOCATION} | & | +| main.rs:2786:11:2821:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2787:5:2787:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2788:5:2788:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2789:5:2789:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2789:20:2789:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2789:41:2789:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2790:5:2790:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2791:5:2791:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2792:5:2792:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2793:5:2793:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2794:5:2794:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2795:5:2795:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2796:5:2796:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2797:5:2797:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2798:5:2798:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2799:5:2799:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2800:5:2800:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2801:5:2801:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2802:5:2802:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2803:5:2803:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2804:5:2804:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2805:5:2805:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2805:5:2805:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2806:5:2806:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2807:5:2807:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2808:5:2808:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2809:5:2809:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2810:5:2810:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2811:5:2811:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2812:5:2812:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2813:5:2813:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2814:5:2814:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2815:5:2815:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2816:5:2816:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2817:5:2817:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2818:5:2818:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2819:5:2819:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2819:5:2819:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2819:5:2819:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | +| main.rs:2819:5:2819:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:16:2819:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2820:5:2820:23 | ...::f(...) | | {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 | @@ -4012,6 +4272,115 @@ inferCertainType | 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] | +| overloading.rs:409:16:409:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:409:16:409:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] | +| overloading.rs:414:16:414:16 | x | | {EXTERNAL LOCATION} | & | +| overloading.rs:414:16:414:16 | x | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:414:16:414:16 | x | TRef.T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:414:26:414:27 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:417:16:417:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:417:16:417:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:417:16:417:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:417:23:417:24 | { ... } | | {EXTERNAL LOCATION} | () | +| 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 | +| overloading.rs:425:13:425:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:425:13:425:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:425:13:425:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| 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 | +| overloading.rs:432:13:432:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:432:13:432:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:432:13:432:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| 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 | +| overloading.rs:441:13:441:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:441:13:441:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:441:13:441:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 | +| 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 | +| overloading.rs:448:13:448:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:448:13:448:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:448:13:448:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 | +| overloading.rs:455:14:455:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:455:14:455:18 | SelfParam | TRef | overloading.rs:454:5:456:5 | Self [trait MyTrait] | +| overloading.rs:461:14:461:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:461:14:461:18 | SelfParam | TRef | overloading.rs:458:5:462:5 | Self [trait MyTrait2] | +| overloading.rs:461:21:461:21 | x | | overloading.rs:458:20:458:27 | T | +| 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} | () | @@ -4960,6 +5329,52 @@ inferCertainType | regressions.rs:67:29:67:33 | other | TRef | regressions.rs:41:5:42:14 | S2 | | regressions.rs:71:14:75:5 | { ... } | | {EXTERNAL LOCATION} | () | | regressions.rs:74:22:74:24 | &s2 | | {EXTERNAL LOCATION} | & | +| regressions.rs:82:20:82:24 | value | | regressions.rs:81:18:81:18 | T | +| regressions.rs:86:20:86:20 | s | | regressions.rs:85:10:85:10 | T | +| 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} | & | +| regressions.rs:118:14:118:17 | SelfParam | TRef | regressions.rs:116:10:116:10 | T | +| regressions.rs:118:20:118:21 | { ... } | | {EXTERNAL LOCATION} | () | +| regressions.rs:124:19:124:22 | SelfParam | | regressions.rs:121:5:121:19 | S | +| regressions.rs:124:19:124:22 | SelfParam | T | regressions.rs:123:10:123:10 | T | +| regressions.rs:127:9:130:9 | { ... } | | {EXTERNAL LOCATION} | () | +| regressions.rs:128:24:128:27 | self | | regressions.rs:121:5:121:19 | S | +| 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 | +| regressions.rs:164:22:164:25 | _rhs | T | regressions.rs:160:10:160:10 | T | +| regressions.rs:164:50:166:9 | { ... } | | regressions.rs:158:5:158:19 | S | +| regressions.rs:164:50:166:9 | { ... } | T | regressions.rs:160:10:160:10 | T | +| regressions.rs:165:13:165:16 | self | | regressions.rs:158:5:158:19 | S | +| regressions.rs:165:13:165:16 | self | T | regressions.rs:160:10:160:10 | T | +| regressions.rs:173:16:173:19 | SelfParam | | regressions.rs:158:5:158:19 | S | +| regressions.rs:173:16:173:19 | SelfParam | T | regressions.rs:169:10:169:10 | T | +| regressions.rs:173:22:173:25 | _rhs | | regressions.rs:169:10:169:10 | T | +| regressions.rs:173:47:175:9 | { ... } | | regressions.rs:158:5:158:19 | S | +| regressions.rs:173:47:175:9 | { ... } | T | regressions.rs:169:10:169:10 | T | +| regressions.rs:174:13:174:16 | self | | regressions.rs:158:5:158:19 | S | +| regressions.rs:174:13:174:16 | self | T | regressions.rs:169:10:169:10 | T | +| regressions.rs:178:14:180:5 | { ... } | | {EXTERNAL LOCATION} | () | inferType | 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 | @@ -5318,17 +5733,17 @@ inferType | associated_types.rs:454:24:454:28 | SelfParam | TRef | associated_types.rs:452:5:455:5 | Self [trait Subtrait] | | associated_types.rs:463:23:463:27 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:463:23:463:27 | SelfParam | TRef | associated_types.rs:457:5:467:5 | Self [trait Subtrait2] | -| associated_types.rs:463:30:463:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:463:48:463:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:463:30:463:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | +| associated_types.rs:463:48:463:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | | associated_types.rs:463:66:466:9 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:464:13:464:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:464:13:464:16 | self | TRef | associated_types.rs:457:5:467:5 | Self [trait Subtrait2] | | associated_types.rs:464:13:464:24 | self.set(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:464:22:464:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:464:22:464:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | | associated_types.rs:465:13:465:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:465:13:465:16 | self | TRef | associated_types.rs:457:5:467:5 | Self [trait Subtrait2] | | associated_types.rs:465:13:465:24 | self.set(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:465:22:465:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:465:22:465:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2 (inherited from GetSet)] | | 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 | @@ -5919,6 +6334,8 @@ inferType | closure.rs:10:18:10:24 | add_one | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:27 | add_one(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:10: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 | | closure.rs:13:13:13:13 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:13:17:13:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | @@ -5938,6 +6355,8 @@ inferType | closure.rs:15:18:15:25 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:28 | add_zero(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:15:26:15:28 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:15:26:15:28 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:15:27:15:27 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:17:13:17:21 | _get_bool | | {EXTERNAL LOCATION} | dyn Fn | | closure.rs:17:13:17:21 | _get_bool | dyn(Args) | {EXTERNAL LOCATION} | () | @@ -5965,6 +6384,8 @@ inferType | closure.rs:25:18:25:19 | id | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:25 | id(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:25: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) | @@ -5984,18 +6405,24 @@ inferType | closure.rs:30:25:30:27 | id2 | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:32 | id2(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:30: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} | () | @@ -6003,74 +6430,77 @@ inferType | 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:53:11:53:11 | 2 | | {EXTERNAL LOCATION} | i64 | | 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} | i32 | | 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} | i32 | | 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:57:34:63:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:58:13:62:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:58:13:62:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i64 | | closure.rs:58:16:58:16 | x | | {EXTERNAL LOCATION} | bool | | closure.rs:58:18:60:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:58:18:60:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:59:17:59:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:59:17:59:17 | 1 | | {EXTERNAL LOCATION} | i64 | | closure.rs:60:20:62:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:60:20:62:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:61:17:61:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:61:17:61:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:64:13:64:14 | _r | | {EXTERNAL LOCATION} | i32 | | closure.rs:64:13:64:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:64:18:64:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | | 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} | i32 | | 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} | () | @@ -6078,74 +6508,77 @@ inferType | 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:90:11:90:11 | 2 | | {EXTERNAL LOCATION} | i64 | | 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} | i32 | | 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} | i32 | | 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:94:34:100:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:95:13:99:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:95:13:99:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i64 | | closure.rs:95:16:95:16 | x | | {EXTERNAL LOCATION} | bool | | closure.rs:95:18:97:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:95:18:97:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:96:17:96:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:96:17:96:17 | 1 | | {EXTERNAL LOCATION} | i64 | | closure.rs:97:20:99:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:97:20:99:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:98:17:98:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:98:17:98:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:101:13:101:14 | _r | | {EXTERNAL LOCATION} | i32 | | closure.rs:101:13:101:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:101:18:101:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | | 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} | i32 | | 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} | () | @@ -6153,63 +6586,62 @@ inferType | 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:127:11:127:11 | 2 | | {EXTERNAL LOCATION} | i64 | | 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} | i32 | | 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} | i32 | | 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:131:34:137:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:132:13:136:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:132:13:136:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i64 | | closure.rs:132:16:132:16 | x | | {EXTERNAL LOCATION} | bool | | closure.rs:132:18:134:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:132:18:134:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:133:17:133:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:133:17:133:17 | 1 | | {EXTERNAL LOCATION} | i64 | | closure.rs:134:20:136:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:134:20:136:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | closure.rs:135:17:135:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:135:17:135:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:138:13:138:14 | _r | | {EXTERNAL LOCATION} | i32 | | closure.rs:138:13:138:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:138:18:138:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | | 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} | i32 | | 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 | @@ -6219,7 +6651,8 @@ inferType | 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:9:147:14 | f(...) | | {EXTERNAL LOCATION} | F::Output[FnOnce] | +| 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 | @@ -6253,6 +6686,292 @@ inferType | 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: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: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: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: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: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: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 | | 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} | & | @@ -9326,14 +10045,21 @@ inferType | main.rs:1341:28:1341:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1341:28:1341:41 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | | main.rs:1341:39:1341:40 | S1 | | main.rs:1317:5:1318:14 | S1 | +| main.rs:1343:13:1343:13 | y | | main.rs:1317:5:1318:14 | S1 | | main.rs:1343:17:1343:17 | x | | {EXTERNAL LOCATION} | Result | | main.rs:1343:17:1343:17 | x | T | {EXTERNAL LOCATION} | Result | | main.rs:1343:17:1343:17 | x | T.T | main.rs:1317:5:1318:14 | S1 | | main.rs:1343:17:1343:18 | TryExpr | | {EXTERNAL LOCATION} | Result | | main.rs:1343:17:1343:18 | TryExpr | T | main.rs:1317:5:1318:14 | S1 | | main.rs:1343:17:1343:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1343:17:1343:29 | ... .map(...) | T | main.rs:1317:5:1318:14 | S1 | +| main.rs:1343:17:1343:30 | TryExpr | | main.rs:1317:5:1318:14 | S1 | | main.rs:1343:24:1343:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:1343:24:1343:28 | \|...\| s | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1343:24:1343:28 | \|...\| s | dyn(Args).T0 | main.rs:1317:5:1318:14 | S1 | +| main.rs:1343:24:1343:28 | \|...\| s | dyn(Output) | main.rs:1317:5:1318:14 | S1 | +| main.rs:1343:25:1343:25 | s | | main.rs:1317:5:1318:14 | S1 | +| main.rs:1343:28:1343:28 | s | | main.rs:1317:5:1318:14 | S1 | | main.rs:1344:9:1344:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1344:9:1344:22 | ...::Ok(...) | E | main.rs:1320:5:1321:14 | S2 | | main.rs:1344:9:1344:22 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | @@ -9349,26 +10075,36 @@ inferType | main.rs:1350:21:1350:25 | input | E | main.rs:1317:5:1318:14 | S1 | | main.rs:1350:21:1350:25 | input | T | main.rs:1349:20:1349:27 | T | | main.rs:1350:21:1350:26 | TryExpr | | main.rs:1349:20:1349:27 | T | +| main.rs:1351:13:1351:18 | mapped | | main.rs:1349:20:1349:27 | T | | main.rs:1351:22:1351:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1351:22:1351:38 | ...::Ok(...) | E | main.rs:1317:5:1318:14 | S1 | | main.rs:1351:22:1351:38 | ...::Ok(...) | T | main.rs:1349:20:1349:27 | T | | main.rs:1351:22:1354:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1351:22:1354:10 | ... .and_then(...) | E | main.rs:1317:5:1318:14 | S1 | +| main.rs:1351:22:1354:10 | ... .and_then(...) | T | main.rs:1349:20:1349:27 | T | +| main.rs:1351:22:1354:11 | TryExpr | | main.rs:1349:20:1349:27 | T | | main.rs:1351:33:1351:37 | value | | main.rs:1349:20:1349:27 | T | | main.rs:1351:49:1354:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:1351:49:1354:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Args).T0 | main.rs:1349:20:1349:27 | T | | main.rs:1351:49:1354:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | | main.rs:1351:49:1354:9 | \|...\| ... | dyn(Output).E | main.rs:1317:5:1318:14 | S1 | +| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Output).T | main.rs:1349:20:1349:27 | T | +| main.rs:1351:50:1351:50 | v | | main.rs:1349:20:1349:27 | T | | main.rs:1351:53:1354:9 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1351:53:1354:9 | { ... } | E | main.rs:1317:5:1318:14 | S1 | +| main.rs:1351:53:1354:9 | { ... } | T | main.rs:1349:20:1349:27 | T | | main.rs:1352:13:1352:31 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1352:22:1352:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1352:22:1352:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1352:22:1352:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1352:22:1352:30 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1352:22:1352:30 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1352:30:1352:30 | v | | main.rs:1349:20:1349:27 | T | | main.rs:1353:13:1353:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1353:13:1353:34 | ...::Ok::<...>(...) | E | main.rs:1317:5:1318:14 | S1 | +| main.rs:1353:13:1353:34 | ...::Ok::<...>(...) | T | main.rs:1349:20:1349:27 | T | +| main.rs:1353:33:1353:33 | v | | main.rs:1349:20:1349:27 | T | | main.rs:1355:9:1355:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1355:9:1355:23 | ...::Err(...) | E | main.rs:1317:5:1318:14 | S1 | | main.rs:1355:9:1355:23 | ...::Err(...) | T | main.rs:1349:20:1349:27 | T | @@ -10652,7 +11388,6 @@ inferType | main.rs:2032:56:2034:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:2032:56:2034:9 | { ... } | TRef | main.rs:2028:10:2028:10 | T | | main.rs:2033:13:2033:29 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2033:13:2033:29 | &... | TRef | {EXTERNAL LOCATION} | u8 | | main.rs:2033:13:2033:29 | &... | TRef | main.rs:2028:10:2028:10 | T | | main.rs:2033:14:2033:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:2033:14:2033:17 | self | TRef | main.rs:2013:5:2016:5 | MyVec | @@ -10660,7 +11395,6 @@ inferType | main.rs:2033:14:2033:22 | self.data | | {EXTERNAL LOCATION} | Vec | | main.rs:2033:14:2033:22 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:2033:14:2033:22 | self.data | T | main.rs:2028:10:2028:10 | T | -| main.rs:2033:14:2033:29 | ...[index] | | {EXTERNAL LOCATION} | u8 | | main.rs:2033:14:2033:29 | ...[index] | | main.rs:2028:10:2028:10 | T | | main.rs:2033:24:2033:28 | index | | {EXTERNAL LOCATION} | usize | | main.rs:2037:22:2037:26 | slice | | {EXTERNAL LOCATION} | & | @@ -10941,14 +11675,21 @@ inferType | main.rs:2261:25:2261:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2261:28:2261:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2262:9:2262:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2262:13:2262:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2262:18:2262:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2262:18:2262:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2262:18:2262:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] | +| main.rs:2262:18:2262:41 | ... .map(...) | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2262:19:2262:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2262:22:2262:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2262:25:2262:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2262:32:2262:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:2262:32:2262:40 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:2262:32:2262:40 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2262:32:2262:40 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| main.rs:2262:33:2262:33 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2262:36:2262:36 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2262:36:2262:40 | ... + ... | | {EXTERNAL LOCATION} | i32 | | main.rs:2262:40:2262:40 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2262:43:2262:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2263:9:2263:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | @@ -11976,249 +12717,291 @@ inferType | main.rs:2634:9:2634:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2643:14:2643:17 | SelfParam | | main.rs:2639:5:2640:13 | S | | main.rs:2643:20:2643:21 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2646:16:2696:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2647:13:2647:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2647:13:2647:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2647:17:2647:20 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2647:17:2647:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2648:13:2648:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2648:13:2648:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2648:30:2648:30 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2648:30:2648:30 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2649:13:2649:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2649:13:2649:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2649:17:2649:35 | ...::None | | {EXTERNAL LOCATION} | Option | -| main.rs:2649:17:2649:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2650:13:2650:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2650:13:2650:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2650:17:2650:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | -| main.rs:2650:17:2650:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2652:26:2652:28 | opt | | {EXTERNAL LOCATION} | Option | -| main.rs:2652:26:2652:28 | opt | T | main.rs:2652:23:2652:23 | T | -| main.rs:2652:42:2652:42 | x | | main.rs:2652:23:2652:23 | T | -| main.rs:2652:48:2652:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2646:41:2648:5 | { ... } | | main.rs:2646:22:2646:31 | T | +| main.rs:2647:9:2647:26 | ...::default(...) | | main.rs:2646:22:2646:31 | T | +| main.rs:2650:16:2703:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2651:13:2651:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2651:13:2651:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2651:17:2651:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2651:17:2651:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2652:13:2652:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2652:13:2652:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2652:30:2652:30 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2652:30:2652:30 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2653:13:2653:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2653:13:2653:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2653:17:2653:35 | ...::None | | {EXTERNAL LOCATION} | Option | +| main.rs:2653:17:2653:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | | main.rs:2654:13:2654:13 | x | | {EXTERNAL LOCATION} | Option | | main.rs:2654:13:2654:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2654:17:2654:20 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2654:17:2654:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:9:2655:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2655:20:2655:20 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2655:20:2655:20 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:23:2655:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2662:13:2662:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2662:13:2662:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2662:13:2662:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2662:17:2662:39 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2662:17:2662:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2662:17:2662:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2662:37:2662:37 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:13:2663:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2663:13:2663:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:13:2663:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2663:40:2663:40 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2663:40:2663:40 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:40:2663:40 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2664:13:2664:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2664:13:2664:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2664:13:2664:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2664:17:2664:52 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2664:17:2664:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2664:17:2664:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2664:50:2664:50 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:13:2666:13 | x | | main.rs:2657:9:2660:9 | MyEither | +| main.rs:2654:17:2654:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | +| main.rs:2654:17:2654:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2656:26:2656:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2656:26:2656:28 | opt | T | main.rs:2656:23:2656:23 | T | +| main.rs:2656:42:2656:42 | x | | main.rs:2656:23:2656:23 | T | +| main.rs:2656:48:2656:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2658:13:2658:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2658:13:2658:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:17:2658:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2658:17:2658:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:9:2659:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2659:20:2659:20 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2659:20:2659:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:23:2659:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2666:13:2666:13 | x | | main.rs:2661:9:2664:9 | MyEither | | main.rs:2666:13:2666:13 | x | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2666:13:2666:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2666:17:2668:9 | ...::B::<...> {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2666:17:2668:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:17:2668:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2667:20:2667:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2670:29:2670:29 | e | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2670:29:2670:29 | e | T1 | main.rs:2670:26:2670:26 | T | -| main.rs:2670:29:2670:29 | e | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2670:53:2670:53 | x | | main.rs:2670:26:2670:26 | T | -| main.rs:2670:59:2670:60 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2673:13:2673:13 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2673:13:2673:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2673:13:2673:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2673:17:2675:9 | ...::B {...} | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2673:17:2675:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2673:17:2675:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2674:20:2674:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2676:9:2676:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2676:23:2676:23 | x | | main.rs:2657:9:2660:9 | MyEither | -| main.rs:2676:23:2676:23 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2676:23:2676:23 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2676:26:2676:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:13:2678:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2678:13:2678:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2678:13:2678:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:17:2678:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2678:17:2678:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2678:17:2678:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:28:2678:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2679:13:2679:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2679:13:2679:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2679:13:2679:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2679:38:2679:38 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2679:38:2679:38 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2679:38:2679:38 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2680:13:2680:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2680:13:2680:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2680:13:2680:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2680:17:2680:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2680:17:2680:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2680:17:2680:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2680:43:2680:43 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2681:13:2681:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2681:13:2681:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2681:13:2681:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2681:17:2681:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2681:17:2681:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2681:17:2681:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2681:43:2681:43 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2683:29:2683:31 | res | | {EXTERNAL LOCATION} | Result | -| main.rs:2683:29:2683:31 | res | E | main.rs:2683:26:2683:26 | E | -| main.rs:2683:29:2683:31 | res | T | main.rs:2683:23:2683:23 | T | -| main.rs:2683:48:2683:48 | x | | main.rs:2683:26:2683:26 | E | -| main.rs:2683:54:2683:55 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2666:17:2666:39 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2666:17:2666:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2666:17:2666:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2666:37:2666:37 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2667:13:2667:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2667:13:2667:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2667:13:2667:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2667:40:2667:40 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2667:40:2667:40 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2667:40:2667:40 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2668:13:2668:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2668:13:2668:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2668:13:2668:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2668:17:2668:52 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2668:17:2668:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2668:17:2668:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2668:50:2668:50 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2670:13:2670:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2670:13:2670:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2670:13:2670:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2670:17:2672:9 | ...::B::<...> {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2671:20:2671:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2674:29:2674:29 | e | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2674:29:2674:29 | e | T1 | main.rs:2674:26:2674:26 | T | +| main.rs:2674:29:2674:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2674:53:2674:53 | x | | main.rs:2674:26:2674:26 | T | +| main.rs:2674:59:2674:60 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2677:13:2677:13 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2677:13:2677:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:13:2677:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2677:17:2679:9 | ...::B {...} | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2677:17:2679:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:17:2679:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2678:20:2678:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2680:9:2680:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2680:23:2680:23 | x | | main.rs:2661:9:2664:9 | MyEither | +| main.rs:2680:23:2680:23 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2680:23:2680:23 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2680:26:2680:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:13:2682:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2682:13:2682:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2682:13:2682:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:17:2682:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2682:17:2682:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2682:17:2682:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:28:2682:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:13:2683:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2683:13:2683:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2683:13:2683:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:38:2683:38 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2683:38:2683:38 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2683:38:2683:38 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:13:2684:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2684:13:2684:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2684:13:2684:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:17:2684:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2684:17:2684:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2684:17:2684:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:43:2684:43 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2685:13:2685:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2685:13:2685:13 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:2685:13:2685:13 | x | E | {EXTERNAL LOCATION} | String | | main.rs:2685:13:2685:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:17:2685:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2685:17:2685:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | -| main.rs:2685:17:2685:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:28:2685:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2686:9:2686:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2686:20:2686:20 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2686:20:2686:20 | x | E | {EXTERNAL LOCATION} | bool | -| main.rs:2686:20:2686:20 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2686:23:2686:27 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2688:17:2688:17 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2688:17:2688:17 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:17:2688:17 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2688:21:2688:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2688:21:2688:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:21:2688:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:9:2689:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2689:9:2689:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2689:9:2689:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:9:2689:17 | x.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2689:16:2689:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2691:13:2691:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2691:17:2691:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2692:9:2692:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2692:9:2692:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2692:9:2692:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2692:9:2692:17 | x.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2692:16:2692:16 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2694:13:2694:13 | s | | main.rs:2639:5:2640:13 | S | -| main.rs:2694:17:2694:34 | ...::default(...) | | main.rs:2639:5:2640:13 | S | -| main.rs:2695:9:2695:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2695:14:2695:14 | s | | main.rs:2639:5:2640:13 | S | -| main.rs:2702:14:2702:17 | SelfParam | | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2705:14:2705:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2705:14:2705:18 | SelfParam | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2705:21:2705:25 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2705:21:2705:25 | other | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2705:44:2707:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2705:44:2707:9 | { ... } | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2706:13:2706:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2706:13:2706:16 | self | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2706:13:2706:20 | self.f() | | {EXTERNAL LOCATION} | & | -| main.rs:2706:13:2706:20 | self.f() | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] | -| main.rs:2712:14:2712:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | -| main.rs:2712:28:2714:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | i32 | -| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | usize | -| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | usize | -| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2726:14:2726:17 | SelfParam | TRef | main.rs:2724:10:2724:10 | T | -| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2726:28:2728:9 | { ... } | TRef | main.rs:2724:10:2724:10 | T | -| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2727:13:2727:16 | self | TRef | main.rs:2724:10:2724:10 | T | -| main.rs:2731:25:2735:5 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2732:17:2732:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:17:2732:17 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2732:21:2732:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:21:2732:21 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2733:9:2733:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2733:9:2733:9 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2733:9:2733:17 | ... = ... | | {EXTERNAL LOCATION} | () | -| main.rs:2733:13:2733:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2733:13:2733:13 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2733:13:2733:17 | x.f() | | {EXTERNAL LOCATION} | i32 | -| main.rs:2733:13:2733:17 | x.f() | | {EXTERNAL LOCATION} | usize | -| main.rs:2734:9:2734:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2734:9:2734:9 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2737:12:2745:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2738:13:2738:13 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2738:24:2738:24 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:24:2738:24 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2739:13:2739:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2739:13:2739:13 | y | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:17:2739:18 | &1 | | {EXTERNAL LOCATION} | & | -| main.rs:2739:17:2739:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:18:2739:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:13 | z | | {EXTERNAL LOCATION} | & | -| main.rs:2740:13:2740:13 | z | TRef | {EXTERNAL LOCATION} | usize | -| main.rs:2740:17:2740:17 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2740:17:2740:22 | x.g(...) | | {EXTERNAL LOCATION} | & | -| main.rs:2740:17:2740:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize | -| main.rs:2740:21:2740:21 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2740:21:2740:21 | y | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2742:13:2742:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2742:17:2742:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2743:13:2743:13 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2743:24:2743:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2743:24:2743:24 | 1 | | {EXTERNAL LOCATION} | usize | -| main.rs:2744:13:2744:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:2744:17:2744:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2744:17:2744:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2744:23:2744:23 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2755:11:2790:1 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2756:5:2756:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2757:5:2757:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2758:5:2758:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2758:20:2758:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2758:41:2758:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2759:5:2759:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2760:5:2760:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2761:5:2761:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2762:5:2762:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2763:5:2763:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2764:5:2764:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2765:5:2765:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2766:5:2766:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2767:5:2767:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2768:5:2768:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2769:5:2769:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2770:5:2770:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2771:5:2771:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2772:5:2772:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2773:5:2773:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2774:5:2774:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:2774:5:2774:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:2775:5:2775:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2776:5:2776:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2777:5:2777:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2778:5:2778:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2779:5:2779:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2780:5:2780:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2781:5:2781:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2782:5:2782:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2783:5:2783:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2784:5:2784:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2785:5:2785:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2786:5:2786:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2787:5:2787:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2788:5:2788:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2788:5:2788:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2788:5:2788:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2788:5:2788:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2788:16:2788:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2789:5:2789:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:43:2685:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:29:2687:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:2687:29:2687:31 | res | E | main.rs:2687:26:2687:26 | E | +| main.rs:2687:29:2687:31 | res | T | main.rs:2687:23:2687:23 | T | +| main.rs:2687:48:2687:48 | x | | main.rs:2687:26:2687:26 | E | +| main.rs:2687:54:2687:55 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2689:13:2689:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2689:13:2689:13 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:2689:13:2689:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2689:17:2689:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2689:17:2689:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | +| main.rs:2689:17:2689:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2689:28:2689:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2690:9:2690:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2690:20:2690:20 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2690:20:2690:20 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:2690:20:2690:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2690:23:2690:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:2692:17:2692:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:17:2692:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2692:17:2692:17 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:21:2692:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:21:2692:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2692:21:2692:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2693:9:2693:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2693:9:2693:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2693:9:2693:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2693:9:2693:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2693:16:2693:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2695:13:2695:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:9:2696:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2696:9:2696:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2696:9:2696:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:9:2696:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2696:16:2696:16 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:2698:13:2698:13 | s | | main.rs:2639:5:2640:13 | S | +| main.rs:2698:17:2698:34 | ...::default(...) | | main.rs:2639:5:2640:13 | S | +| main.rs:2699:9:2699:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2699:14:2699:14 | s | | main.rs:2639:5:2640:13 | S | +| main.rs:2701:13:2701:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:17:2701:31 | free_function(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:9:2702:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2702:9:2702:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2702:9:2702:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:9:2702:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2702:16:2702:16 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2709:14:2709:17 | SelfParam | | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2712:14:2712:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2712:14:2712:18 | SelfParam | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2712:21:2712:25 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2712:21:2712:25 | other | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2712:44:2714:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2712:44:2714:9 | { ... } | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2713:13:2713:16 | self | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2713:13:2713:20 | self.f() | | {EXTERNAL LOCATION} | & | +| main.rs:2713:13:2713:20 | self.f() | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | +| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | +| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | usize | +| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | usize | +| main.rs:2733:14:2733:17 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2733:14:2733:17 | SelfParam | TRef | main.rs:2731:10:2731:10 | T | +| main.rs:2733:28:2735:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2733:28:2735:9 | { ... } | TRef | main.rs:2731:10:2731:10 | T | +| main.rs:2734:13:2734:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2734:13:2734:16 | self | TRef | main.rs:2731:10:2731:10 | T | +| main.rs:2738:25:2742:5 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2739:17:2739:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:17:2739:17 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2739:21:2739:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:21:2739:21 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2740:9:2740:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:9:2740:9 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2740:9:2740:17 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:2740:13:2740:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:13 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2740:13:2740:17 | x.f() | | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:17 | x.f() | | {EXTERNAL LOCATION} | usize | +| main.rs:2741:9:2741:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2741:9:2741:9 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2744:12:2752:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2745:13:2745:13 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2745:24:2745:24 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2745:24:2745:24 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2746:13:2746:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2746:13:2746:13 | y | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2746:17:2746:18 | &1 | | {EXTERNAL LOCATION} | & | +| main.rs:2746:17:2746:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2746:18:2746:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2747:13:2747:13 | z | | {EXTERNAL LOCATION} | & | +| main.rs:2747:13:2747:13 | z | TRef | {EXTERNAL LOCATION} | usize | +| main.rs:2747:17:2747:17 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2747:17:2747:22 | x.g(...) | | {EXTERNAL LOCATION} | & | +| main.rs:2747:17:2747:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize | +| main.rs:2747:21:2747:21 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2747:21:2747:21 | y | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2749:13:2749:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2749:17:2749:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2750:13:2750:13 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2750:24:2750:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2750:24:2750:24 | 1 | | {EXTERNAL LOCATION} | usize | +| main.rs:2751:13:2751:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2751:17:2751:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2751:17:2751:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2751:23:2751:23 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2766:22:2766:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2766:22:2766:26 | SelfParam | TRef | main.rs:2765:5:2767:5 | Self [trait Container] | +| main.rs:2769:34:2769:34 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2769:34:2769:34 | c | TRef | main.rs:2769:15:2769:31 | T | +| main.rs:2769:49:2771:5 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2770:9:2770:9 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2770:9:2770:9 | c | TRef | main.rs:2769:15:2769:31 | T | +| main.rs:2770:9:2770:21 | c.get_input() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2770:9:2770:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2770:26:2770:27 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2774:22:2774:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2774:22:2774:26 | SelfParam | TRef | main.rs:2763:5:2763:21 | Gen | +| main.rs:2774:22:2774:26 | SelfParam | TRef.T | main.rs:2773:10:2773:17 | GT | +| main.rs:2774:35:2776:9 | { ... } | | main.rs:2773:10:2773:17 | GT | +| main.rs:2775:13:2775:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2775:13:2775:16 | self | TRef | main.rs:2763:5:2763:21 | Gen | +| main.rs:2775:13:2775:16 | self | TRef.T | main.rs:2773:10:2773:17 | GT | +| main.rs:2775:13:2775:18 | self.0 | | main.rs:2773:10:2773:17 | GT | +| main.rs:2779:15:2783:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2780:13:2780:13 | v | | {EXTERNAL LOCATION} | i64 | +| main.rs:2780:17:2780:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2781:13:2781:13 | g | | main.rs:2763:5:2763:21 | Gen | +| main.rs:2781:13:2781:13 | g | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2781:17:2781:22 | Gen(...) | | main.rs:2763:5:2763:21 | Gen | +| main.rs:2781:17:2781:22 | Gen(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2781:21:2781:21 | v | | {EXTERNAL LOCATION} | i64 | +| main.rs:2782:13:2782:13 | _ | | {EXTERNAL LOCATION} | bool | +| main.rs:2782:17:2782:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2782:24:2782:25 | &g | | {EXTERNAL LOCATION} | & | +| main.rs:2782:24:2782:25 | &g | TRef | main.rs:2763:5:2763:21 | Gen | +| main.rs:2782:24:2782:25 | &g | TRef.T | {EXTERNAL LOCATION} | i64 | +| main.rs:2782:25:2782:25 | g | | main.rs:2763:5:2763:21 | Gen | +| main.rs:2782:25:2782:25 | g | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2786:11:2821:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2787:5:2787:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2788:5:2788:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2789:5:2789:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2789:20:2789:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2789:41:2789:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2790:5:2790:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2791:5:2791:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2792:5:2792:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2793:5:2793:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2794:5:2794:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2795:5:2795:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2796:5:2796:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2797:5:2797:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2798:5:2798:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2799:5:2799:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2800:5:2800:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2801:5:2801:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2802:5:2802:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2803:5:2803:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2804:5:2804:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2805:5:2805:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2805:5:2805:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2806:5:2806:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2807:5:2807:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2808:5:2808:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2809:5:2809:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2810:5:2810:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2811:5:2811:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2812:5:2812:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2813:5:2813:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2814:5:2814:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2815:5:2815:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2816:5:2816:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2817:5:2817:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2818:5:2818:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2819:5:2819:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2819:5:2819:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2819:5:2819:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | +| main.rs:2819:5:2819:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:16:2819:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2820:5:2820:23 | ...::f(...) | | {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 | @@ -12675,6 +13458,168 @@ inferType | overloading.rs:399:17:399:29 | ...::from(...) | | overloading.rs:372:5:372:14 | S1 | | overloading.rs:399:28:399:28 | s | | overloading.rs:364:5:365:13 | S | | overloading.rs:400:9:400:9 | x | | overloading.rs:372:5:372:14 | S1 | +| 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] | +| overloading.rs:409:16:409:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:409:16:409:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] | +| overloading.rs:414:16:414:16 | x | | {EXTERNAL LOCATION} | & | +| overloading.rs:414:16:414:16 | x | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:414:16:414:16 | x | TRef.T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:414:26:414:27 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:417:16:417:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:417:16:417:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:417:16:417:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:417:23:417:24 | { ... } | | {EXTERNAL LOCATION} | () | +| 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 | +| overloading.rs:425:13:425:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:425:13:425:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:425:13:425:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:425:13:425:22 | self.foo() | | {EXTERNAL LOCATION} | () | +| 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 | +| overloading.rs:432:13:432:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:432:13:432:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:432:13:432:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:432:13:432:22 | self.bar() | | {EXTERNAL LOCATION} | () | +| 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 | +| overloading.rs:441:13:441:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:441:13:441:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:441:13:441:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 | +| overloading.rs:441:13:441:22 | self.foo() | | {EXTERNAL LOCATION} | () | +| 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 | +| overloading.rs:448:13:448:16 | self | | {EXTERNAL LOCATION} | & | +| overloading.rs:448:13:448:16 | self | TRef | overloading.rs:405:5:405:19 | S | +| overloading.rs:448:13:448:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 | +| overloading.rs:448:13:448:22 | self.bar() | | {EXTERNAL LOCATION} | () | +| overloading.rs:455:14:455:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:455:14:455:18 | SelfParam | TRef | overloading.rs:454:5:456:5 | Self [trait MyTrait] | +| overloading.rs:461:14:461:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| overloading.rs:461:14:461:18 | SelfParam | TRef | overloading.rs:458:5:462:5 | Self [trait MyTrait2] | +| overloading.rs:461:21:461:21 | x | | overloading.rs:458:20:458:27 | T | +| 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:468:13:468:13 | 0 | | {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: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 | +| 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:482:13:482:13 | 0 | | {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: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: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 | +| overloading.rs:503:9:503:13 | x.f() | | overloading.rs:502:15:502:16 | T1 | +| 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:9:507:14 | y.f(...) | | overloading.rs:506:20:506:35 | T2::Output[MyTrait2] | +| overloading.rs:507:13:507:13 | x | | overloading.rs:506:16:506:17 | T1 | +| overloading.rs:510:15:522:5 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:511:13:511:13 | x | | overloading.rs:464:5:464:19 | S | +| overloading.rs:511:13:511:13 | x | T | {EXTERNAL LOCATION} | i32 | +| 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 | +| overloading.rs:515:17:515:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:515:19:515:19 | 0 | | {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:516:34:516:34 | x | | overloading.rs:464:5:464:19 | S | +| overloading.rs:516:34:516:34 | x | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:518:13:518:13 | x | | overloading.rs:464:5:464:19 | S | +| overloading.rs:518:13:518:13 | x | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:518:17:518:20 | S(...) | | overloading.rs:464:5:464:19 | S | +| overloading.rs:518:17:518:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:518:19:518:19 | 0 | | {EXTERNAL LOCATION} | i32 | +| overloading.rs:519:13:519:13 | y | | {EXTERNAL LOCATION} | i32 | +| overloading.rs:519:17:519:35 | call_f2(...) | | {EXTERNAL LOCATION} | i32 | +| overloading.rs:519:25:519:31 | S(...) | | overloading.rs:464:5:464:19 | S | +| overloading.rs:519:25:519:31 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:519:27:519:30 | 0i32 | | {EXTERNAL LOCATION} | i32 | +| overloading.rs:519:34:519:34 | x | | overloading.rs:464:5:464:19 | S | +| overloading.rs:519:34:519:34 | x | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:520:13:520:13 | x | | overloading.rs:464:5:464:19 | S | +| overloading.rs:520:13:520:13 | x | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:520:17:520:20 | S(...) | | overloading.rs:464:5:464:19 | S | +| overloading.rs:520:17:520:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| overloading.rs:520:19:520:19 | 0 | | {EXTERNAL LOCATION} | i32 | +| overloading.rs:521:13:521:13 | y | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:521:17:521:35 | call_f2(...) | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:521:25:521:31 | S(...) | | overloading.rs:464:5:464:19 | S | +| overloading.rs:521:25:521:31 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| overloading.rs:521:27:521:30 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:521:34:521:34 | x | | overloading.rs:464:5:464:19 | S | +| overloading.rs:521:34:521:34 | x | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | {EXTERNAL LOCATION} | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | @@ -14818,4 +15763,101 @@ inferType | regressions.rs:74:22:74:24 | &s2 | | {EXTERNAL LOCATION} | & | | regressions.rs:74:22:74:24 | &s2 | TRef | regressions.rs:41:5:42:14 | S2 | | regressions.rs:74:23:74:24 | s2 | | regressions.rs:41:5:42:14 | S2 | +| regressions.rs:82:20:82:24 | value | | regressions.rs:81:18:81:18 | T | +| regressions.rs:86:20:86:20 | s | | regressions.rs:85:10:85:10 | T | +| 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:13:93:21 | Some(...) | | {EXTERNAL LOCATION} | Option | +| regressions.rs:93:13:93:21 | Some(...) | 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:13:104:13 | y | | {EXTERNAL LOCATION} | Option | +| regressions.rs:104:13:104:13 | y | T | regressions.rs:99:14:99:15 | T1 | +| regressions.rs:104:13:104:13 | y | T | regressions.rs:99:18:99:19 | T2 | +| regressions.rs:104:17:104:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | Option | +| regressions.rs:104:17:104:34 | ...::my_from(...) | T | regressions.rs:99:14:99:15 | T1 | +| regressions.rs:104:17:104:34 | ...::my_from(...) | T | regressions.rs:99:18:99:19 | T2 | +| regressions.rs:104:33:104:33 | x | | regressions.rs:99:18:99:19 | T2 | +| regressions.rs:105:13:105:13 | z | | regressions.rs:99:18:99:19 | T2 | +| regressions.rs:105:17:105:34 | ...::my_from(...) | | regressions.rs:99:18:99:19 | T2 | +| regressions.rs:105:33:105:33 | y | | {EXTERNAL LOCATION} | Option | +| regressions.rs:105:33:105:33 | y | T | regressions.rs:99:14:99:15 | T1 | +| regressions.rs:105:33:105:33 | y | T | regressions.rs:99:18:99:19 | T2 | +| regressions.rs:106:9:106:9 | z | | 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} | & | +| regressions.rs:118:14:118:17 | SelfParam | TRef | regressions.rs:116:10:116:10 | T | +| regressions.rs:118:20:118:21 | { ... } | | {EXTERNAL LOCATION} | () | +| regressions.rs:124:19:124:22 | SelfParam | | regressions.rs:121:5:121:19 | S | +| regressions.rs:124:19:124:22 | SelfParam | T | regressions.rs:123:10:123:10 | T | +| regressions.rs:127:9:130:9 | { ... } | | {EXTERNAL LOCATION} | () | +| regressions.rs:128:17:128:20 | S(...) | | regressions.rs:121:5:121:19 | S | +| regressions.rs:128:17:128:20 | S(...) | T | regressions.rs:123:10:123:10 | T | +| regressions.rs:128:19:128:19 | s | | regressions.rs:123:10:123:10 | T | +| regressions.rs:128:24:128:27 | self | | regressions.rs:121:5:121:19 | S | +| regressions.rs:128:24:128:27 | self | T | regressions.rs:123:10:123:10 | T | +| regressions.rs:129:13:129:13 | s | | regressions.rs:123:10:123:10 | T | +| regressions.rs:129:13:129:17 | s.m() | | {EXTERNAL LOCATION} | () | +| 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:140:13:140:18 | S2(...) | | regressions.rs:136:5:136:22 | S2 | +| regressions.rs:140:13:140:18 | S2(...) | T2 | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:140:16:140:17 | S1 | | 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:13:146:17 | S2(...) | | regressions.rs:136:5:136:22 | S2 | +| regressions.rs:146:13:146:17 | S2(...) | 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:151:13:151:13 | x | | regressions.rs:136:5:136:22 | S2 | +| regressions.rs:151:13:151:13 | x | T2 | {EXTERNAL LOCATION} | & | +| regressions.rs:151:13:151:13 | x | T2 | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:151:13:151:13 | x | T2.TRef | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:151:17:151:18 | S1 | | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:151:17:151:25 | S1.into() | | regressions.rs:136:5:136:22 | S2 | +| regressions.rs:151:17:151:25 | S1.into() | T2 | {EXTERNAL LOCATION} | & | +| regressions.rs:151:17:151:25 | S1.into() | T2 | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:151:17:151:25 | S1.into() | T2.TRef | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:152:9:152:9 | x | | regressions.rs:136:5:136:22 | S2 | +| regressions.rs:152:9:152:9 | x | T2 | {EXTERNAL LOCATION} | & | +| regressions.rs:152:9:152:9 | x | T2 | regressions.rs:135:5:135:14 | S1 | +| regressions.rs:152:9:152:9 | x | T2.TRef | 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 | +| regressions.rs:164:22:164:25 | _rhs | T | regressions.rs:160:10:160:10 | T | +| regressions.rs:164:50:166:9 | { ... } | | regressions.rs:158:5:158:19 | S | +| regressions.rs:164:50:166:9 | { ... } | T | regressions.rs:160:10:160:10 | T | +| regressions.rs:165:13:165:16 | self | | regressions.rs:158:5:158:19 | S | +| regressions.rs:165:13:165:16 | self | T | regressions.rs:160:10:160:10 | T | +| regressions.rs:173:16:173:19 | SelfParam | | regressions.rs:158:5:158:19 | S | +| regressions.rs:173:16:173:19 | SelfParam | T | regressions.rs:169:10:169:10 | T | +| regressions.rs:173:22:173:25 | _rhs | | regressions.rs:169:10:169:10 | T | +| regressions.rs:173:47:175:9 | { ... } | | regressions.rs:158:5:158:19 | S | +| regressions.rs:173:47:175:9 | { ... } | T | regressions.rs:169:10:169:10 | T | +| regressions.rs:174:13:174:16 | self | | regressions.rs:158:5:158:19 | S | +| regressions.rs:174:13:174:16 | self | T | regressions.rs:169:10:169:10 | T | +| regressions.rs:178:14:180:5 | { ... } | | {EXTERNAL LOCATION} | () | +| regressions.rs:179:13:179:13 | x | | regressions.rs:158:5:158:19 | S | +| regressions.rs:179:13:179:13 | x | T | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:13:179:13 | x | T | regressions.rs:158:5:158:19 | S | +| regressions.rs:179:13:179:13 | x | T.T | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:17:179:20 | S(...) | | regressions.rs:158:5:158:19 | S | +| regressions.rs:179:17:179:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:17:179:27 | ... + ... | | regressions.rs:158:5:158:19 | S | +| regressions.rs:179:17:179:27 | ... + ... | T | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:17:179:27 | ... + ... | T | regressions.rs:158:5:158:19 | S | +| regressions.rs:179:17:179:27 | ... + ... | T.T | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:19:179:19 | 0 | | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:24:179:27 | S(...) | | regressions.rs:158:5:158:19 | S | +| regressions.rs:179:24:179:27 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| regressions.rs:179:26:179:26 | 1 | | {EXTERNAL LOCATION} | i32 | testFailures diff --git a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected index ef0a9e0d8063..a04fd96739cd 100644 --- a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected +++ b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected @@ -21,3 +21,9 @@ | test_cipher.rs:109:23:109:56 | ...::new_with_eff_key_len(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:109:23:109:56 | ...::new_with_eff_key_len(...) | The cryptographic algorithm RC2 | | test_cipher.rs:114:23:114:50 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:114:23:114:50 | ...::new(...) | The cryptographic algorithm RC5 | | test_cipher.rs:118:23:118:55 | ...::new_from_slice(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:118:23:118:55 | ...::new_from_slice(...) | The cryptographic algorithm RC5 | +| test_cipher.rs:136:23:136:76 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:136:23:136:76 | ...::new(...) | The cryptographic algorithm DES | +| test_cipher.rs:139:23:139:64 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:139:23:139:64 | ...::new(...) | The cryptographic algorithm DES | +| test_cipher.rs:142:23:142:76 | ...::new_from_slices(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:142:23:142:76 | ...::new_from_slices(...) | The cryptographic algorithm DES | +| test_cipher.rs:145:23:145:76 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:145:23:145:76 | ...::new(...) | The cryptographic algorithm DES | +| test_cipher.rs:171:23:171:65 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:171:23:171:65 | ...::new(...) | The cryptographic algorithm DES | +| test_cipher.rs:175:23:175:65 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:175:23:175:65 | ...::new(...) | The cryptographic algorithm RC2 | diff --git a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 18400b7ab59b..000000000000 --- a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleResolvedTargets -| test_cipher.rs:114:23:114:50 | ...::new(...) | diff --git a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/test_cipher.rs b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/test_cipher.rs index 17db0f9ceb19..81964436720d 100644 --- a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/test_cipher.rs +++ b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/test_cipher.rs @@ -133,16 +133,16 @@ fn test_cbc( _ = aes_cipher1.encrypt_padded_mut::(data, data_len).unwrap(); // des (broken) - let des_cipher1 = cbc::Encryptor::::new(key.into(), iv.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm] + let des_cipher1 = cbc::Encryptor::::new(key.into(), iv.into()); // $ Alert[rust/weak-cryptographic-algorithm] _ = des_cipher1.encrypt_padded_mut::(data, data_len).unwrap(); - let des_cipher2 = MyDesEncryptor::new(key.into(), iv.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm] + let des_cipher2 = MyDesEncryptor::new(key.into(), iv.into()); // $ Alert[rust/weak-cryptographic-algorithm] _ = des_cipher2.encrypt_padded_mut::(data, data_len).unwrap(); - let des_cipher3 = cbc::Encryptor::::new_from_slices(&key, &iv).unwrap(); // $ MISSING: Alert[rust/weak-cryptographic-algorithm] + let des_cipher3 = cbc::Encryptor::::new_from_slices(&key, &iv).unwrap(); // $ Alert[rust/weak-cryptographic-algorithm] _ = des_cipher3.encrypt_padded_mut::(data, data_len).unwrap(); - let des_cipher4 = cbc::Encryptor::::new(key.into(), iv.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm] + let des_cipher4 = cbc::Encryptor::::new(key.into(), iv.into()); // $ Alert[rust/weak-cryptographic-algorithm] _ = des_cipher4.encrypt_padded_b2b_mut::(input, data).unwrap(); } @@ -168,10 +168,10 @@ fn test_ecb( _ = aes_cipher4.encrypt_padded_b2b_mut::(input, data).unwrap(); // des with ECB (broken cipher + weak block mode) - let des_cipher1 = ecb::Encryptor::::new(key.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm] + let des_cipher1 = ecb::Encryptor::::new(key.into()); // $ Alert[rust/weak-cryptographic-algorithm] _ = des_cipher1.encrypt_padded_mut::(data, data_len).unwrap(); // rc2 with ECB (broken cipher + weak block mode) - let rc2_cipher1 = ecb::Encryptor::::new(key.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm] + let rc2_cipher1 = ecb::Encryptor::::new(key.into()); // $ Alert[rust/weak-cryptographic-algorithm] _ = rc2_cipher1.encrypt_padded_mut::(data, data_len).unwrap(); } diff --git a/rust/ql/test/utils-tests/modelgenerator/option.rs b/rust/ql/test/utils-tests/modelgenerator/option.rs index fd5cd649c2cf..afe76e2088e5 100644 --- a/rust/ql/test/utils-tests/modelgenerator/option.rs +++ b/rust/ql/test/utils-tests/modelgenerator/option.rs @@ -149,6 +149,8 @@ impl MyOption { // summary=::map;Argument[0].ReturnValue;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated // summary=::map;Argument[self].Field[test::option::MyOption::MySome(0)];Argument[0].Parameter[0];value;dfc-generated + // The spurious model below happens because `f` incorrectly resolves to the closure passed in from `as_deref` + // SPURIOUS-summary=::map;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)].Reference;taint;dfc-generated pub fn map(self, f: F) -> MyOption where F: FnOnce(T) -> U, @@ -217,7 +219,7 @@ impl MyOption { } } - // MISSING: `Deref` trait + // summary=::as_deref;Argument[self].Reference.Field[test::option::MyOption::MySome(0)];ReturnValue.Field[test::option::MyOption::MySome(0)].Reference;taint;dfc-generated pub fn as_deref(&self) -> MyOption<&T::Target> where T: Deref, @@ -416,7 +418,7 @@ impl MyOption<&T> { } } - // MISSING: summary=::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn cloned(self) -> MyOption where T: Clone, @@ -440,7 +442,7 @@ impl MyOption<&mut T> { } } - // MISSING: summary=::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // summary=::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn cloned(self) -> MyOption where T: Clone, diff --git a/rust/tools/builtins/impls.rs b/rust/tools/builtins/impls.rs new file mode 100644 index 000000000000..facffd700058 --- /dev/null +++ b/rust/tools/builtins/impls.rs @@ -0,0 +1,134 @@ +/// Contains type-specialized versions of +/// +/// ``` +/// impl Index for [T; N] +/// where +/// [T]: Index, +/// { +/// type Output = <[T] as Index>::Output; +/// ... +/// } +/// ``` +/// +/// and +/// +/// ``` +/// impl ops::Index for [T] +/// where +/// I: SliceIndex<[T]>, +/// { +/// type Output = I::Output; +/// ... +/// } +/// ``` +/// +/// and +/// ``` +/// impl, A: Allocator> Index for Vec { +/// type Output = I::Output; +/// ... +/// } +/// ``` +/// +/// (as well as their `IndexMut` counterparts), which the type inference library +/// cannot currently handle (we fail to resolve the `Output` types). +mod index_impls { + use std::alloc::Allocator; + use std::ops::Index; + + impl Index for [T; N] { + type Output = T; + + fn index(&self, index: i32) -> &Self::Output { + panic!() + } + } + + impl IndexMut for [T; N] { + type Output = T; + + fn index_mut(&mut self, index: i32) -> &mut Self::Output { + panic!() + } + } + + impl Index for [T; N] { + type Output = T; + + fn index(&self, index: usize) -> &Self::Output { + panic!() + } + } + + impl IndexMut for [T; N] { + type Output = T; + + fn index_mut(&mut self, index: usize) -> &mut Self::Output { + panic!() + } + } + + impl Index for [T] { + type Output = T; + + fn index(&self, index: i32) -> &Self::Output { + panic!() + } + } + + impl IndexMut for [T] { + type Output = T; + + fn index_mut(&mut self, index: i32) -> &mut Self::Output { + panic!() + } + } + + impl Index for [T] { + type Output = T; + + fn index(&self, index: usize) -> &Self::Output { + panic!() + } + } + + impl IndexMut for [T] { + type Output = T; + + fn index_mut(&mut self, index: usize) -> &mut Self::Output { + panic!() + } + } + + impl Index for Vec { + type Output = T; + + fn index(&self, index: i32) -> &Self::Output { + panic!() + } + } + + impl IndexMut for Vec { + type Output = T; + + fn index_mut(&mut self, index: i32) -> &mut Self::Output { + panic!() + } + } + + impl Index for Vec { + type Output = T; + + fn index(&self, index: usize) -> &Self::Output { + panic!() + } + } + + impl IndexMut for Vec { + type Output = T; + + fn index_mut(&mut self, index: usize) -> &mut Self::Output { + panic!() + } + } +} diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index 61720754dff9..704ea3e8e019 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.21 + +No user-facing changes. + +## 0.0.20 + +No user-facing changes. + +## 0.0.19 + +No user-facing changes. + ## 0.0.18 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.19.md b/shared/concepts/change-notes/released/0.0.19.md new file mode 100644 index 000000000000..914e4c9074d1 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.19.md @@ -0,0 +1,3 @@ +## 0.0.19 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.20.md b/shared/concepts/change-notes/released/0.0.20.md new file mode 100644 index 000000000000..98daf20a59a1 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.20.md @@ -0,0 +1,3 @@ +## 0.0.20 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.21.md b/shared/concepts/change-notes/released/0.0.21.md new file mode 100644 index 000000000000..d32472e976d2 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.21.md @@ -0,0 +1,3 @@ +## 0.0.21 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index a0d2bc59d979..0c15c351db40 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.18 +lastReleaseVersion: 0.0.21 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index fc4c0b767d5c..bf6e8b6018c0 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.18 +version: 0.0.22-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index cd52e9f754d7..baca729ddda8 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.31 + +No user-facing changes. + +## 2.0.30 + +No user-facing changes. + +## 2.0.29 + +No user-facing changes. + ## 2.0.28 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.29.md b/shared/controlflow/change-notes/released/2.0.29.md new file mode 100644 index 000000000000..c8e5d5c3d050 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.29.md @@ -0,0 +1,3 @@ +## 2.0.29 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.30.md b/shared/controlflow/change-notes/released/2.0.30.md new file mode 100644 index 000000000000..607e69a62596 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.30.md @@ -0,0 +1,3 @@ +## 2.0.30 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.31.md b/shared/controlflow/change-notes/released/2.0.31.md new file mode 100644 index 000000000000..b3cd05e3de4d --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.31.md @@ -0,0 +1,3 @@ +## 2.0.31 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index ec5bd6ba3691..783d47207cda 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.28 +lastReleaseVersion: 2.0.31 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 1376dbfe3ccc..5573548794d0 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.28 +version: 2.0.32-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index d669cdf14dae..52c893f78e27 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.1.3 + +No user-facing changes. + +## 2.1.2 + +No user-facing changes. + +## 2.1.1 + +No user-facing changes. + ## 2.1.0 ### New Features diff --git a/shared/dataflow/change-notes/released/2.1.1.md b/shared/dataflow/change-notes/released/2.1.1.md new file mode 100644 index 000000000000..f023e9166c2d --- /dev/null +++ b/shared/dataflow/change-notes/released/2.1.1.md @@ -0,0 +1,3 @@ +## 2.1.1 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.1.2.md b/shared/dataflow/change-notes/released/2.1.2.md new file mode 100644 index 000000000000..6e72407c8c7a --- /dev/null +++ b/shared/dataflow/change-notes/released/2.1.2.md @@ -0,0 +1,3 @@ +## 2.1.2 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.1.3.md b/shared/dataflow/change-notes/released/2.1.3.md new file mode 100644 index 000000000000..a1338012fcdd --- /dev/null +++ b/shared/dataflow/change-notes/released/2.1.3.md @@ -0,0 +1,3 @@ +## 2.1.3 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 487a1a58b2b8..345fb0c73a44 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.0 +lastReleaseVersion: 2.1.3 diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 7f9c0194374b..cacd52cf8396 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -63,6 +63,35 @@ signature module InputSig { DataFlowType getNodeType(Node node); + /** + * Gets a special type to use for parameter node `p` belonging to callables with a + * source node where a source call context `FlowFeature` is used, if any. + * + * This can be used to prevent lambdas from being resolved, when a concrete call + * context is needed. Example: + * + * ```csharp + * void Foo(Action a) + * { + * var x = Source(); + * a(x); // (1) + * a = s => Sink(s); // (2) + * a(x); // (3) + * } + * + * void Bar() + * { + * Foo(s => Sink(s)); // (4) + * } + * ``` + * + * If a source call context flow feature is used, `a` can be assigned a special + * type that is incompatible with the type of _any_ lambda expression, which will + * prevent the call edge from (1) to (4). Note that the call edge from (3) to (2) + * will still be valid. + */ + default DataFlowType getSourceContextParameterNodeType(Node p) { none() } + predicate nodeIsHidden(Node node); class DataFlowExpr; diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 506774857d8e..ed0412d1cd4d 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -1103,6 +1103,16 @@ module MakeImpl Lang> { private module FwdTypeFlowInput implements TypeFlowInput { predicate enableTypeFlow = Param::enableTypeFlow/0; + pragma[nomagic] + predicate isParameterNodeInSourceCallContext(ParamNode p) { + hasSourceCallCtx() and + exists(Node source, DataFlowCallable c | + Config::isSource(pragma[only_bind_into](source), _) and + nodeEnclosingCallable(source, c) and + nodeEnclosingCallable(p, c) + ) + } + predicate relevantCallEdgeIn = PrevStage::relevantCallEdgeIn/2; predicate relevantCallEdgeOut = PrevStage::relevantCallEdgeOut/2; @@ -1410,6 +1420,8 @@ module MakeImpl Lang> { private module RevTypeFlowInput implements TypeFlowInput { predicate enableTypeFlow = Param::enableTypeFlow/0; + predicate isParameterNodeInSourceCallContext(ParamNode p) { none() } + predicate relevantCallEdgeIn(Call call, Callable c) { flowOutOfCallAp(call, c, _, _, _, _, _) } diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index 51ebb3f8a730..962a58c26f94 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -1893,6 +1893,9 @@ module MakeImplCommon Lang> { signature module TypeFlowInput { predicate enableTypeFlow(); + /** Holds if `p` is a parameter of a callable with a source node that has a call context. */ + predicate isParameterNodeInSourceCallContext(ParamNode p); + /** Holds if the edge is possibly needed in the direction `call` to `c`. */ predicate relevantCallEdgeIn(Call call, Callable c); @@ -1953,6 +1956,9 @@ module MakeImplCommon Lang> { /** * Holds if a sequence of calls may propagate the value of `arg` to some * argument-to-parameter call edge that strengthens the static type. + * + * This predicate is a reverse flow computation, starting at calls that + * strengthen the type and then following relevant call edges backwards. */ pragma[nomagic] private predicate trackedArgTypeCand(ArgNode arg) { @@ -1987,6 +1993,9 @@ module MakeImplCommon Lang> { * Holds if `p` is part of a value-propagating call path where the * end-points have stronger types than the intermediate parameter and * argument nodes. + * + * This predicate is a forward flow computation, intersecting with the + * reverse flow computation done in `trackedArgTypeCand`. */ private predicate trackedParamType(ParamNode p) { exists(Call call1, Callable c1, ArgNode argOut, Call call2, Callable c2, ArgNode argIn | @@ -2013,6 +2022,8 @@ module MakeImplCommon Lang> { typeStrongerThanFilter(at, pt) ) or + Input::isParameterNodeInSourceCallContext(p) + or exists(ArgNode arg | trackedArgType(arg) and relevantCallEdge(_, _, arg, p) and @@ -2104,8 +2115,12 @@ module MakeImplCommon Lang> { * context. */ private predicate typeFlowParamType(ParamNode p, Type t, boolean cc) { - exists(Callable c | - Input::dataFlowNonCallEntry(c, cc) and + exists(Callable c | Input::dataFlowNonCallEntry(c, cc) | + cc = true and + nodeEnclosingCallable(p, c) and + t = getSourceContextParameterNodeType(p) + or + (cc = false or not exists(getSourceContextParameterNodeType(p))) and trackedParamWithType(p, t, c) ) or diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll index 426576d3acef..b7a45a67b567 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll @@ -86,6 +86,8 @@ module MakeImplStage1 Lang> { bindingset[p, kind] predicate parameterFlowThroughAllowed(ParamNd p, ReturnKindExt kind); + predicate fwdFlow(Nd node); + // begin StageSig class Ap; @@ -634,7 +636,7 @@ module MakeImplStage1 Lang> { ) } - private predicate fwdFlow(NodeEx node) { fwdFlow(node, _) } + predicate fwdFlow(NodeEx node) { fwdFlow(node, _) } pragma[nomagic] private predicate fwdFlowReadSet(ContentSet c, NodeEx node, Cc cc) { @@ -1291,6 +1293,8 @@ module MakeImplStage1 Lang> { import Stage1 import Stage1Common + predicate fwdFlow(Nd node) { Stage1::fwdFlow(node) } + predicate revFlow(NodeEx node, Ap ap) { Stage1::revFlow(node) and exists(ap) } predicate toNormalSinkNode = toNormalSinkNodeEx/1; @@ -1395,6 +1399,8 @@ module MakeImplStage1 Lang> { import Stage1Common + predicate fwdFlow(Nd node) { Stage1::fwdFlow(node.getNodeEx()) } + predicate revFlow(Nd node) { Stage1::revFlow(node.getNodeEx()) } predicate revFlow(Nd node, Ap ap) { Stage1::revFlow(node.getNodeEx()) and exists(ap) } diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index d76672571921..ce980724778b 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -368,6 +368,34 @@ module Make< abstract predicate isSink(string input, string kind, Provenance provenance, string model); } + /** A barrier element. */ + abstract class BarrierElement extends SourceBaseFinal { + bindingset[this] + BarrierElement() { any() } + + /** + * Holds if this element is a flow barrier of kind `kind`, where data + * flows out as described by `output`. + */ + pragma[nomagic] + abstract predicate isBarrier(string output, string kind, Provenance provenance, string model); + } + + /** A barrier guard element. */ + abstract class BarrierGuardElement extends SinkBaseFinal { + bindingset[this] + BarrierGuardElement() { any() } + + /** + * Holds if this element is a flow barrier guard of kind `kind`, for data + * flowing in as described by `input`, when `this` evaluates to `acceptingValue`. + */ + pragma[nomagic] + abstract predicate isBarrierGuard( + string input, string acceptingValue, string kind, Provenance provenance, string model + ); + } + private signature predicate hasKindSig(string kind); signature class NeutralCallableSig extends SummarizedCallableBaseFinal { @@ -723,7 +751,32 @@ module Make< ) } - private predicate summarySpec(string spec) { + private predicate isRelevantBarrier( + BarrierElement e, string output, string kind, Provenance provenance, string model + ) { + e.isBarrier(output, kind, provenance, model) and + ( + provenance.isManual() + or + provenance.isGenerated() and + not exists(Provenance p | p.isManual() and e.isBarrier(_, kind, p, _)) + ) + } + + private predicate isRelevantBarrierGuard( + BarrierGuardElement e, string input, string acceptingValue, string kind, + Provenance provenance, string model + ) { + e.isBarrierGuard(input, acceptingValue, kind, provenance, model) and + ( + provenance.isManual() + or + provenance.isGenerated() and + not exists(Provenance p | p.isManual() and e.isBarrierGuard(_, _, kind, p, _)) + ) + } + + private predicate flowSpec(string spec) { exists(SummarizedCallable c | c.propagatesFlow(spec, _, _, _, _, _) or @@ -732,10 +785,14 @@ module Make< or isRelevantSource(_, spec, _, _, _) or + isRelevantBarrier(_, spec, _, _, _) + or + isRelevantBarrierGuard(_, spec, _, _, _, _) + or isRelevantSink(_, spec, _, _, _) } - import AccessPathSyntax::AccessPath + import AccessPathSyntax::AccessPath /** Holds if specification component `token` parses as parameter `pos`. */ predicate parseParam(AccessPathToken token, ArgumentPosition pos) { @@ -1515,6 +1572,31 @@ module Make< ) } + /** + * Holds if `barrier` is a relevant barrier element with output specification `outSpec`. + */ + predicate barrierSpec( + BarrierElement barrier, SummaryComponentStack outSpec, string kind, string model + ) { + exists(string output | + isRelevantBarrier(barrier, output, kind, _, model) and + External::interpretSpec(output, outSpec) + ) + } + + /** + * Holds if `barrierGuard` is a relevant barrier guard element with input specification `inSpec`. + */ + predicate barrierGuardSpec( + BarrierGuardElement barrierGuard, SummaryComponentStack inSpec, string acceptingValue, + string kind, string model + ) { + exists(string input | + isRelevantBarrierGuard(barrierGuard, input, acceptingValue, kind, _, model) and + External::interpretSpec(input, inSpec) + ) + } + signature module TypesInputSig { /** Gets the type of content `c`. */ DataFlowType getContentType(ContentSet c); @@ -2107,10 +2189,10 @@ module Make< not exists(interpretComponent(c)) } - /** Holds if `acceptingvalue` is not a valid barrier guard accepting-value. */ - bindingset[acceptingvalue] - predicate invalidAcceptingValue(string acceptingvalue) { - not acceptingvalue instanceof AcceptingValue + /** Holds if `acceptingValue` is not a valid barrier guard accepting-value. */ + bindingset[acceptingValue] + predicate invalidAcceptingValue(string acceptingValue) { + not acceptingValue instanceof AcceptingValue } /** Holds if `provenance` is not a valid provenance value. */ @@ -2160,10 +2242,10 @@ module Make< /** * Holds if an external barrier guard specification exists for `n` with input - * specification `input`, accepting value `acceptingvalue`, and kind `kind`. + * specification `input`, accepting value `acceptingValue`, and kind `kind`. */ predicate barrierGuardElement( - Element n, string input, AcceptingValue acceptingvalue, string kind, + Element n, string input, AcceptingValue acceptingValue, string kind, Provenance provenance, string model ); @@ -2289,11 +2371,11 @@ module Make< } private predicate barrierGuardElementRef( - InterpretNode ref, SourceSinkAccessPath input, AcceptingValue acceptingvalue, string kind, + InterpretNode ref, SourceSinkAccessPath input, AcceptingValue acceptingValue, string kind, string model ) { exists(SourceOrSinkElement e | - barrierGuardElement(e, input, acceptingvalue, kind, _, model) and + barrierGuardElement(e, input, acceptingValue, kind, _, model) and if inputNeedsReferenceExt(input.getToken(0)) then e = ref.getCallTarget() else e = ref.asElement() @@ -2436,10 +2518,10 @@ module Make< * given kind in a MaD flow model. */ predicate isBarrierGuardNode( - InterpretNode node, AcceptingValue acceptingvalue, string kind, string model + InterpretNode node, AcceptingValue acceptingValue, string kind, string model ) { exists(InterpretNode ref, SourceSinkAccessPath input | - barrierGuardElementRef(ref, input, acceptingvalue, kind, model) and + barrierGuardElementRef(ref, input, acceptingValue, kind, model) and interpretInput(input, input.getNumToken(), ref, node) ) } diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 09f2320911d0..3b917def33db 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.1.0 +version: 2.1.4-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index ac2f534d1f0f..1bffb976cf8c 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.45.md b/shared/mad/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.46.md b/shared/mad/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.47.md b/shared/mad/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/mad/codeql/mad/ModelValidation.qll b/shared/mad/codeql/mad/ModelValidation.qll index 042fb4200dd1..5eaa78626ab3 100644 --- a/shared/mad/codeql/mad/ModelValidation.qll +++ b/shared/mad/codeql/mad/ModelValidation.qll @@ -48,7 +48,7 @@ module KindValidation { // CPP-only currently "remote-sink", // Python-only currently, but may be shared in the future - "prompt-injection" + "bind-socket-all-interfaces", "prompt-injection" ] or this.matches([ diff --git a/shared/mad/codeql/mad/static/ModelsAsData.qll b/shared/mad/codeql/mad/static/ModelsAsData.qll index 84daaa9b6c86..4b58a23186ac 100644 --- a/shared/mad/codeql/mad/static/ModelsAsData.qll +++ b/shared/mad/codeql/mad/static/ModelsAsData.qll @@ -31,7 +31,7 @@ signature module ExtensionsSig { */ predicate barrierGuardModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); @@ -142,14 +142,14 @@ module ModelsAsData { or exists( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance + string input, string acceptingValue, string kind, string provenance | Extensions::barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, - acceptingvalue, kind, provenance, madId) + acceptingValue, kind, provenance, madId) | model = "Barrier Guard: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + - signature + "; " + ext + "; " + input + "; " + acceptingvalue + "; " + kind + "; " + + signature + "; " + ext + "; " + input + "; " + acceptingValue + "; " + kind + "; " + provenance ) or @@ -241,12 +241,12 @@ module ModelsAsData { /** Holds if a barrier guard model exists for the given parameters. */ predicate barrierGuardModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, string model + string input, string acceptingValue, string kind, string provenance, string model ) { exists(string namespaceOrGroup, QlBuiltins::ExtensionId madId | namespace = getNamespace(namespaceOrGroup) and Extensions::barrierGuardModel(namespaceOrGroup, type, subtypes, name, signature, ext, input, - acceptingvalue, kind, provenance, madId) and + acceptingValue, kind, provenance, madId) and model = "MaD:" + madId.toString() ) } diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 370dcab571e4..b5583f8c55a2 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 356c331b5dfe..8d524a11a093 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.25 + +No user-facing changes. + +## 0.0.24 + +No user-facing changes. + +## 0.0.23 + +No user-facing changes. + ## 0.0.22 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.23.md b/shared/quantum/change-notes/released/0.0.23.md new file mode 100644 index 000000000000..e89a1284bb82 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.23.md @@ -0,0 +1,3 @@ +## 0.0.23 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.24.md b/shared/quantum/change-notes/released/0.0.24.md new file mode 100644 index 000000000000..84995db2aff6 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.24.md @@ -0,0 +1,3 @@ +## 0.0.24 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.25.md b/shared/quantum/change-notes/released/0.0.25.md new file mode 100644 index 000000000000..e41a9acfa062 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.25.md @@ -0,0 +1,3 @@ +## 0.0.25 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index 11aaa2243f57..6d0e80a50c3f 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.22 +lastReleaseVersion: 0.0.25 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 066a920be90a..a19e99ef7eaa 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.22 +version: 0.0.26-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 7fe3864e2a95..0ab7487192cb 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.45.md b/shared/rangeanalysis/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.46.md b/shared/rangeanalysis/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.47.md b/shared/rangeanalysis/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index e3d15e3fb29f..d493350749ee 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 76740aca8386..dd6f0c4cad6b 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.45.md b/shared/regex/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.46.md b/shared/regex/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.47.md b/shared/regex/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 0595120a7a8e..7b953dcff1cf 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 8e2eb4bd049a..3573140fc410 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.23 + +No user-facing changes. + +## 2.0.22 + +No user-facing changes. + +## 2.0.21 + +No user-facing changes. + ## 2.0.20 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.21.md b/shared/ssa/change-notes/released/2.0.21.md new file mode 100644 index 000000000000..bdc5029b70b1 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.22.md b/shared/ssa/change-notes/released/2.0.22.md new file mode 100644 index 000000000000..8a2611adad2d --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.22.md @@ -0,0 +1,3 @@ +## 2.0.22 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.23.md b/shared/ssa/change-notes/released/2.0.23.md new file mode 100644 index 000000000000..ab6f6f171ed6 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.23.md @@ -0,0 +1,3 @@ +## 2.0.23 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index cde101f35162..1bd7e296a34f 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.20 +lastReleaseVersion: 2.0.23 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 0e191175233d..a8fa9a114243 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.20 +version: 2.0.24-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 83afe3edcec0..34ae2fd22778 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.45.md b/shared/threat-models/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.46.md b/shared/threat-models/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.47.md b/shared/threat-models/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 34df87895540..a4a367a990b3 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.44 +version: 1.0.48-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 403c4b8589a6..cf8f60d1d46a 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.45.md b/shared/tutorial/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.46.md b/shared/tutorial/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.47.md b/shared/tutorial/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 913f73c24fe8..f961ccdc0eb2 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.44 +version: 1.0.48-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index b57a022aa47b..8c5ee5e94864 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.45.md b/shared/typeflow/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.46.md b/shared/typeflow/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.47.md b/shared/typeflow/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index bba635a47974..f7e111d28fde 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 8d524a11a093..7153b9314b18 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.28 + +No user-facing changes. + +## 0.0.27 + +No user-facing changes. + +## 0.0.26 + +No user-facing changes. + ## 0.0.25 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.26.md b/shared/typeinference/change-notes/released/0.0.26.md new file mode 100644 index 000000000000..e6dc680cc11b --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.26.md @@ -0,0 +1,3 @@ +## 0.0.26 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.27.md b/shared/typeinference/change-notes/released/0.0.27.md new file mode 100644 index 000000000000..ff6e274427b7 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.27.md @@ -0,0 +1,3 @@ +## 0.0.27 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.28.md b/shared/typeinference/change-notes/released/0.0.28.md new file mode 100644 index 000000000000..1b4fdd478196 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.28.md @@ -0,0 +1,3 @@ +## 0.0.28 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index 6d0e80a50c3f..3462db7d348f 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.25 +lastReleaseVersion: 0.0.28 diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index c33c49e7a168..9f4be49d878a 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -336,7 +336,7 @@ module Make1 Input1> { * ``` * the type parameter `T` has the constraint `IComparable`. */ - Type getATypeParameterConstraint(TypeParameter tp, TypePath path); + TypeMention getATypeParameterConstraint(TypeParameter tp); /** * Holds if @@ -385,6 +385,45 @@ module Make1 Input1> { predicate conditionSatisfiesConstraint( TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ); + + /** + * Holds if the constraint belonging to `abs` with root type `constraint` is + * ambiguous at `path`, meaning that there is _some_ other abstraction `abs2` + * with a structurally identical condition and same root constraint type + * `constraint`, and where the constraints differ at `path`. + * + * Example: + * + * ```rust + * trait Trait { } + * + * impl Trait for Foo { ... } + * // ^^^ `abs` + * // ^^^^^ `constraint` + * // ^^^^^^ `condition` + * + * impl Trait for Foo { } + * // ^^^ `abs2` + * // ^^^^^ `constraint` + * // ^^^^^^ `condition2` + * ``` + * + * In the above, `abs` and `abs2` have structurally identical conditions, + * `condition` and `condition2`, and they differ at the path `"T1"`, but + * not at the path `"T2"`. + */ + predicate typeAbstractionHasAmbiguousConstraintAt( + TypeAbstraction abs, Type constraint, TypePath path + ); + + /** + * Holds if all instantiations of `tp` are functionally determined by the + * instantiations of the other type parameters in the same abstraction. + * + * For example, in Rust all associated types act as functionally determined + * type parameters. + */ + predicate typeParameterIsFunctionallyDetermined(TypeParameter tp); } module Make2 Input2> { @@ -527,15 +566,17 @@ module Make1 Input1> { ) } + pragma[nomagic] private predicate typeParametersEqual( - App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp + App app, TypeAbstraction abs, Constraint constraint, int i ) { - satisfiesConcreteTypes(app, abs, constraint) and - tp = getNthTypeParameter(abs, _) and - ( + exists(TypeParameter tp | + satisfiesConcreteTypes(app, abs, constraint) and + tp = getNthTypeParameter(abs, i) + | not exists(getNthTypeParameterPath(constraint, tp, _)) or - exists(int n | n = max(int i | exists(getNthTypeParameterPath(constraint, tp, i))) | + exists(int n | n = max(int j | exists(getNthTypeParameterPath(constraint, tp, j))) | // If the largest index is 0, then there are no equalities to check as // the type parameter only occurs once. if n = 0 then any() else typeParametersEqualToIndex(app, abs, constraint, tp, _, n) @@ -546,12 +587,10 @@ module Make1 Input1> { private predicate typeParametersHaveEqualInstantiationToIndex( App app, TypeAbstraction abs, Constraint constraint, int i ) { - exists(TypeParameter tp | tp = getNthTypeParameter(abs, i) | - typeParametersEqual(app, abs, constraint, tp) and - if i = 0 - then any() - else typeParametersHaveEqualInstantiationToIndex(app, abs, constraint, i - 1) - ) + typeParametersEqual(app, abs, constraint, i) and + if i = 0 + then any() + else typeParametersHaveEqualInstantiationToIndex(app, abs, constraint, i - 1) } /** @@ -661,6 +700,7 @@ module Make1 Input1> { * Holds if the type mention `condition` satisfies `constraint` with the * type `t` at the path `path`. */ + pragma[nomagic] predicate conditionSatisfiesConstraintTypeAt( TypeAbstraction abs, TypeMention condition, TypeMention constraint, TypePath path, Type t ) { @@ -820,38 +860,58 @@ module Make1 Input1> { private import BaseTypes - signature module SatisfiesConstraintInputSig { + /** Provides the input to `SatisfiesConstraintWithTypeMatching`. */ + signature module SatisfiesConstraintWithTypeMatchingInputSig< + HasTypeTreeSig Term, HasTypeTreeSig Constraint> + { /** Holds if it is relevant to know if `term` satisfies `constraint`. */ - predicate relevantConstraint(HasTypeTree term, Type constraint); + predicate relevantConstraint(Term term, Constraint constraint); + + /** A context in which a type parameter can be matched with an instantiation. */ + class TypeMatchingContext; + + /** Gets the type matching context for `t`. */ + TypeMatchingContext getTypeMatchingContext(Term t); + + /** + * Holds if `tp` can be matched with the type `t` at `path` in the context `ctx`. + * + * This may be used to disambiguate between multiple constraints that a term may satisfy. + */ + predicate typeMatch(TypeMatchingContext ctx, TypeParameter tp, TypePath path, Type t); } - module SatisfiesConstraint< - HasTypeTreeSig HasTypeTree, SatisfiesConstraintInputSig Input> + module SatisfiesConstraintWithTypeMatching< + HasTypeTreeSig Term, HasTypeTreeSig Constraint, + SatisfiesConstraintWithTypeMatchingInputSig Input> { private import Input pragma[nomagic] - private Type getTypeAt(HasTypeTree term, TypePath path) { + private Type getTypeAt(Term term, TypePath path) { relevantConstraint(term, _) and result = term.getTypeAt(path) } /** Holds if the type tree has the type `type` and should satisfy `constraint`. */ pragma[nomagic] - private predicate hasTypeConstraint(HasTypeTree term, Type type, Type constraint) { + private predicate hasTypeConstraint( + Term term, Type type, Constraint constraint, Type constraintRoot + ) { type = getTypeAt(term, TypePath::nil()) and - relevantConstraint(term, constraint) + relevantConstraint(term, constraint) and + constraintRoot = constraint.getTypeAt(TypePath::nil()) } - private module IsInstantiationOfInput implements - IsInstantiationOfInputSig + private module TermIsInstantiationOfConditionInput implements + IsInstantiationOfInputSig { - predicate potentialInstantiationOf(HasTypeTree tt, TypeAbstraction abs, TypeMention cond) { - exists(Type constraint, Type type | - hasTypeConstraint(tt, type, constraint) and - rootTypesSatisfaction(type, constraint, abs, cond, _) and + predicate potentialInstantiationOf(Term term, TypeAbstraction abs, TypeMention cond) { + exists(Constraint constraint, Type type, Type constraintRoot | + hasTypeConstraint(term, type, constraint, constraintRoot) and + rootTypesSatisfaction(type, constraintRoot, abs, cond, _) and // We only need to check instantiations where there are multiple candidates. - multipleConstraintImplementations(type, constraint) + multipleConstraintImplementations(type, constraintRoot) ) } @@ -860,18 +920,18 @@ module Make1 Input1> { } } - private module SatisfiesConstraintIsInstantiationOf = - IsInstantiationOf; + private module TermIsInstantiationOfCondition = + IsInstantiationOf; /** - * Holds if `tt` satisfies `constraint` through `abs`, `sub`, and `constraintMention`. + * Holds if `term` satisfies `constraint` through `abs`, `sub`, and `constraintMention`. */ pragma[nomagic] private predicate hasConstraintMention( - HasTypeTree tt, TypeAbstraction abs, TypeMention condition, Type constraint, - TypeMention constraintMention + Term term, TypeAbstraction abs, TypeMention condition, Constraint constraint, + Type constraintRoot, TypeMention constraintMention ) { - exists(Type type | hasTypeConstraint(tt, type, constraint) | + exists(Type type | hasTypeConstraint(term, type, constraint, constraintRoot) | // TODO: Handle universal conditions properly, which means checking type parameter constraints // Also remember to update logic in `hasNotConstraintMention` // @@ -880,35 +940,37 @@ module Make1 Input1> { // getTypeMentionRoot(condition) = abs.getATypeParameter() and // constraint = getTypeMentionRoot(constraintMention) // or - countConstraintImplementations(type, constraint) > 0 and - rootTypesSatisfaction(type, constraint, abs, condition, constraintMention) and + countConstraintImplementations(type, constraintRoot) > 0 and + rootTypesSatisfaction(type, constraintRoot, abs, condition, constraintMention) and // When there are multiple ways the type could implement the // constraint we need to find the right implementation, which is the // one where the type instantiates the precondition. - if multipleConstraintImplementations(type, constraint) - then SatisfiesConstraintIsInstantiationOf::isInstantiationOf(tt, abs, condition) + if multipleConstraintImplementations(type, constraintRoot) + then TermIsInstantiationOfCondition::isInstantiationOf(term, abs, condition) else any() ) } pragma[nomagic] private predicate isNotInstantiationOf( - HasTypeTree tt, TypeAbstraction abs, TypeMention condition, Type root + Term term, TypeAbstraction abs, TypeMention condition, Type root ) { exists(TypePath path | - SatisfiesConstraintIsInstantiationOf::isNotInstantiationOf(tt, abs, condition, path) and + TermIsInstantiationOfCondition::isNotInstantiationOf(term, abs, condition, path) and path.isCons(root.getATypeParameter(), _) ) } /** - * Holds if `tt` does not satisfy `constraint`. + * Holds if `term` does not satisfy `constraint`. * - * This predicate is an approximation of `not hasConstraintMention(tt, constraint)`. + * This predicate is an approximation of `not hasConstraintMention(term, _, _, constraint, _, _)`. */ pragma[nomagic] - private predicate hasNotConstraintMention(HasTypeTree tt, Type constraint) { - exists(Type type | hasTypeConstraint(tt, type, constraint) | + private predicate hasNotConstraintMention( + Term term, Constraint constraint, Type constraintRoot + ) { + exists(Type type | hasTypeConstraint(term, type, constraint, constraintRoot) | // TODO: Handle universal conditions properly, which means taking type parameter constraints into account // ( // exists(countConstraintImplementations(type, constraint)) @@ -921,15 +983,15 @@ module Make1 Input1> { // ) // ) and ( - countConstraintImplementations(type, constraint) = 0 + countConstraintImplementations(type, constraintRoot) = 0 or - not rootTypesSatisfaction(type, constraint, _, _, _) + not rootTypesSatisfaction(type, constraintRoot, _, _, _) or - multipleConstraintImplementations(type, constraint) and + multipleConstraintImplementations(type, constraintRoot) and forex(TypeAbstraction abs, TypeMention condition | - rootTypesSatisfaction(type, constraint, abs, condition, _) + rootTypesSatisfaction(type, constraintRoot, abs, condition, _) | - isNotInstantiationOf(tt, abs, condition, type) + isNotInstantiationOf(term, abs, condition, type) ) ) ) @@ -937,113 +999,294 @@ module Make1 Input1> { pragma[nomagic] private predicate satisfiesConstraintTypeMention0( - HasTypeTree tt, Type constraint, TypeAbstraction abs, TypeMention sub, TypePath path, Type t + Term term, Constraint constraint, TypeMention constraintMention, TypeAbstraction abs, + TypeMention sub, TypePath path, Type t, boolean ambiguous ) { - exists(TypeMention constraintMention | - hasConstraintMention(tt, abs, sub, constraint, constraintMention) and - conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, path, t) + exists(Type constraintRoot | + hasConstraintMention(term, abs, sub, constraint, constraintRoot, constraintMention) and + conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, path, t) and + if + exists(TypePath prefix | + typeAbstractionHasAmbiguousConstraintAt(abs, constraintRoot, prefix) and + prefix.isPrefixOf(path) + ) + then ambiguous = true + else ambiguous = false ) } - pragma[inline] - private predicate satisfiesConstraintTypeMentionInline( - HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, - TypePath pathToTypeParamInSub + pragma[nomagic] + private predicate conditionSatisfiesConstraintTypeAtForDisambiguation( + TypeAbstraction abs, TypeMention condition, TypeMention constraint, TypePath path, Type t ) { - exists(TypeMention sub, TypeParameter tp | - satisfiesConstraintTypeMention0(tt, constraint, abs, sub, path, tp) and - tp = abs.getATypeParameter() and - sub.getTypeAt(pathToTypeParamInSub) = tp + conditionSatisfiesConstraintTypeAt(abs, condition, constraint, path, t) and + not t instanceof TypeParameter and + not typeParameterIsFunctionallyDetermined(path.getHead()) + } + + pragma[nomagic] + private predicate constraintTypeMatchForDisambiguation0( + Term term, Constraint constraint, TypePath path, TypePath suffix, TypeParameter tp + ) { + exists( + TypeMention constraintMention, TypeAbstraction abs, TypeMention sub, TypePath prefix + | + satisfiesConstraintTypeMention0(term, constraint, constraintMention, abs, sub, _, _, true) and + conditionSatisfiesConstraintTypeAtForDisambiguation(abs, sub, constraintMention, path, _) and + tp = constraint.getTypeAt(prefix) and + path = prefix.appendInverse(suffix) + ) + } + + pragma[nomagic] + private predicate constraintTypeMatchForDisambiguation1( + Term term, Constraint constraint, TypePath path, TypeMatchingContext ctx, TypePath suffix, + TypeParameter tp + ) { + constraintTypeMatchForDisambiguation0(term, constraint, path, suffix, tp) and + ctx = getTypeMatchingContext(term) + } + + /** + * Holds if the type of `constraint` at `path` is `t` because it is possible + * to match some type parameter that occurs in `constraint` at a prefix of + * `path` in the context of `term`. + * + * For example, if we have + * + * ```rust + * fn f>(x: T1, y: T2) -> T2::Output { ... } + * ``` + * + * then at a call like `f(true, ...)` the constraint `SomeTrait` has the + * type `bool` substituted for `T1`. + */ + pragma[nomagic] + private predicate constraintTypeMatchForDisambiguation( + Term term, Constraint constraint, TypePath path, Type t + ) { + exists(TypeMatchingContext ctx, TypeParameter tp, TypePath suffix | + constraintTypeMatchForDisambiguation1(term, constraint, path, ctx, suffix, tp) and + typeMatch(ctx, tp, suffix, t) ) } pragma[nomagic] - private predicate satisfiesConstraintTypeMention( - HasTypeTree tt, Type constraint, TypePath path, TypePath pathToTypeParamInSub + private predicate satisfiesConstraint0( + Term term, Constraint constraint, TypeAbstraction abs, TypeMention sub, TypePath path, + Type t + ) { + exists(TypeMention constraintMention, boolean ambiguous | + satisfiesConstraintTypeMention0(term, constraint, constraintMention, abs, sub, path, t, + ambiguous) + | + if ambiguous = true + then + // When the constraint is not uniquely satisfied, we check that the satisfying + // abstraction is not more specific than the constraint to be satisfied. For example, + // if the constraint is `MyTrait` and there is both `impl MyTrait for ...` and + // `impl MyTrait for ...`, then the latter will be filtered away + forall(TypePath path1, Type t1 | + conditionSatisfiesConstraintTypeAtForDisambiguation(abs, sub, constraintMention, + path1, t1) + | + t1 = constraint.getTypeAt(path1) + or + // The constraint may contain a type parameter, which we can match to the right type + constraintTypeMatchForDisambiguation(term, constraint, path1, t1) + ) + else any() + ) + } + + pragma[inline] + private predicate satisfiesConstraintInline( + Term term, Constraint constraint, TypeAbstraction abs, TypePath pathToTypeParamInConstraint, + TypePath pathToTypeParamInSub, TypeParameter tp ) { - satisfiesConstraintTypeMentionInline(tt, _, constraint, path, pathToTypeParamInSub) + exists(TypeMention sub | + satisfiesConstraint0(term, constraint, abs, sub, pathToTypeParamInConstraint, tp) and + tp = abs.getATypeParameter() and + sub.getTypeAt(pathToTypeParamInSub) = tp + ) } + /** + * Holds if `term` satisfies the constraint `constraint` with _some_ type + * parameter at `pathToTypeParamInConstraint`, and the type parameter occurs + * at `pathToTypeParamInSub` in a satisfying condition. + * + * Example: + * + * ```rust + * struct MyThing { ... } + * + * trait MyTrait { ... } + * + * impl MyTrait for MyThing { ... } + * + * fn foo>(x: T) { ... } + * + * let x = MyThing(Default::default()); + * foo(x); + * ``` + * + * At `term` = `foo(x)`, we have `constraint = MyTrait`, and because of the + * `impl` block, `pathToTypeParamInConstraint` = `"B"`, and + * `pathToTypeParamInSub` = `"A"`. + */ pragma[nomagic] - private predicate satisfiesConstraintTypeMentionThrough( - HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, + predicate satisfiesConstraintAtTypeParameter( + Term term, Constraint constraint, TypePath pathToTypeParamInConstraint, TypePath pathToTypeParamInSub ) { - satisfiesConstraintTypeMentionInline(tt, abs, constraint, path, pathToTypeParamInSub) + satisfiesConstraintInline(term, constraint, _, pathToTypeParamInConstraint, + pathToTypeParamInSub, _) } pragma[inline] - private predicate satisfiesConstraintTypeNonTypeParamInline( - HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, Type t + private predicate satisfiesConstraintNonTypeParamInline( + Term term, TypeAbstraction abs, Constraint constraint, TypePath path, Type t ) { - satisfiesConstraintTypeMention0(tt, constraint, abs, _, path, t) and + satisfiesConstraint0(term, constraint, abs, _, path, t) and not t = abs.getATypeParameter() } pragma[nomagic] - private predicate hasTypeConstraint(HasTypeTree term, Type constraint) { - hasTypeConstraint(term, constraint, constraint) + private predicate hasTypeConstraint(Term term, Constraint constraint) { + exists(Type constraintRoot | + hasTypeConstraint(term, constraintRoot, constraint, constraintRoot) + ) } /** - * Holds if the type tree at `tt` satisfies the constraint `constraint` - * with the type `t` at `path`. + * Holds if `term` satisfies the constraint `constraint` with the type `t` at `path`. */ pragma[nomagic] - predicate satisfiesConstraintType(HasTypeTree tt, Type constraint, TypePath path, Type t) { - satisfiesConstraintTypeNonTypeParamInline(tt, _, constraint, path, t) + predicate satisfiesConstraint(Term term, Constraint constraint, TypePath path, Type t) { + satisfiesConstraintNonTypeParamInline(term, _, constraint, path, t) or exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | - satisfiesConstraintTypeMention(tt, constraint, prefix0, pathToTypeParamInSub) and - getTypeAt(tt, pathToTypeParamInSub.appendInverse(suffix)) = t and + satisfiesConstraintAtTypeParameter(term, constraint, prefix0, pathToTypeParamInSub) and + getTypeAt(term, pathToTypeParamInSub.appendInverse(suffix)) = t and path = prefix0.append(suffix) ) or - hasTypeConstraint(tt, constraint) and - t = getTypeAt(tt, path) + hasTypeConstraint(term, constraint) and + t = getTypeAt(term, path) + } + + pragma[nomagic] + private predicate satisfiesConstraintThrough0( + Term term, Constraint constraint, TypeAbstraction abs, TypePath pathToTypeParamInConstraint, + TypePath pathToTypeParamInSub + ) { + satisfiesConstraintInline(term, constraint, abs, pathToTypeParamInConstraint, + pathToTypeParamInSub, _) } /** - * Holds if the type tree at `tt` satisfies the constraint `constraint` - * through `abs` with the type `t` at `path`. + * Holds if `term` satisfies the constraint `constraint` through `abs` with + * the type `t` at `path`. */ pragma[nomagic] - predicate satisfiesConstraintTypeThrough( - HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, Type t + predicate satisfiesConstraintThrough( + Term term, TypeAbstraction abs, Constraint constraint, TypePath path, Type t ) { - satisfiesConstraintTypeNonTypeParamInline(tt, abs, constraint, path, t) + satisfiesConstraintNonTypeParamInline(term, abs, constraint, path, t) or exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | - satisfiesConstraintTypeMentionThrough(tt, abs, constraint, prefix0, pathToTypeParamInSub) and - getTypeAt(tt, pathToTypeParamInSub.appendInverse(suffix)) = t and + satisfiesConstraintThrough0(term, constraint, abs, prefix0, pathToTypeParamInSub) and + getTypeAt(term, pathToTypeParamInSub.appendInverse(suffix)) = t and path = prefix0.append(suffix) ) } /** - * Holds if the type tree at `tt` does _not_ satisfy the constraint `constraint`. + * Holds if `term` does _not_ satisfy the constraint `constraint`. * - * This is an approximation of `not satisfiesConstraintType(tt, constraint, _, _)`, + * This is an approximation of `not satisfiesConstraintType(term, constraint, _, _)`, * but defined without a negative occurrence of `satisfiesConstraintType`. * * Due to the approximation, both `satisfiesConstraintType` and `dissatisfiesConstraint` - * can hold for the same values. For example, if `tt` has two different types `t1` + * can hold for the same values. For example, if `term` has two different types `t1` * and `t2`, and `t1` satisfies `constraint` while `t2` does not, then both * `satisfiesConstraintType` and `dissatisfiesConstraint` will hold. * - * Dually, if `tt` does not have a type, then neither `satisfiesConstraintType` nor + * Dually, if `term` does not have a type, then neither `satisfiesConstraintType` nor * `dissatisfiesConstraint` will hold. */ pragma[nomagic] - predicate dissatisfiesConstraint(HasTypeTree tt, Type constraint) { - hasNotConstraintMention(tt, constraint) and - exists(Type t | - hasTypeConstraint(tt, t, constraint) and - t != constraint + predicate dissatisfiesConstraint(Term term, Constraint constraint) { + hasNotConstraintMention(term, constraint, _) and + exists(Type t, Type constraintRoot | + hasTypeConstraint(term, t, constraint, constraintRoot) and + t != constraintRoot ) } } + /** Provides the input to `SatisfiesConstraint`. */ + signature module SatisfiesConstraintInputSig { + /** Holds if it is relevant to know if `term` satisfies `constraint`. */ + predicate relevantConstraint(Term term, Constraint constraint); + } + + module SatisfiesConstraint< + HasTypeTreeSig Term, HasTypeTreeSig Constraint, + SatisfiesConstraintInputSig Input> + { + private module Inp implements SatisfiesConstraintWithTypeMatchingInputSig { + private import codeql.util.Void + + predicate relevantConstraint(Term term, Constraint constraint) { + Input::relevantConstraint(term, constraint) + } + + class TypeMatchingContext = Void; + + TypeMatchingContext getTypeMatchingContext(Term t) { none() } + + predicate typeMatch(TypeMatchingContext ctx, TypeParameter tp, TypePath path, Type t) { + none() + } + } + + import SatisfiesConstraintWithTypeMatching + } + + /** Provides the input to `SatisfiesType`. */ + signature module SatisfiesTypeInputSig { + /** Holds if it is relevant to know if `term` satisfies `type`. */ + predicate relevantConstraint(Term term, Type type); + } + + /** + * A helper module wrapping `SatisfiesConstraint` where the constraint is simply a type. + */ + module SatisfiesType Input> { + private import Input + + final private class TypeFinal = Type; + + private class TypeAsTypeTree extends TypeFinal { + Type getTypeAt(TypePath path) { + result = this and + path.isEmpty() + } + } + + private module SatisfiesConstraintInput implements + SatisfiesConstraintInputSig + { + predicate relevantConstraint(Term term, TypeAsTypeTree constraint) { + Input::relevantConstraint(term, constraint) + } + } + + import SatisfiesConstraint + } + /** Provides the input to `MatchingWithEnvironment`. */ signature module MatchingWithEnvironmentInputSig { /** @@ -1079,6 +1322,15 @@ module Make1 Input1> { Type getDeclaredType(DeclarationPosition dpos, TypePath path); } + /** + * Gets a type constraint on the type parameter `tp` that applies to `decl`, + * if any. + */ + bindingset[decl] + default TypeMention getATypeParameterConstraint(TypeParameter tp, Declaration decl) { + result = getATypeParameterConstraint(tp) + } + /** * A position inside an access. For example, the integer position of an * argument inside a method call. @@ -1264,12 +1516,12 @@ module Make1 Input1> { } private module AccessConstraint { - predicate relevantAccessConstraint( + private predicate relevantAccessConstraint( Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath path, - Type constraint + TypeMention constraint ) { target = a.getTarget(e) and - typeParameterConstraintHasTypeParameter(target, apos, path, constraint, _, _) + typeParameterHasConstraint(target, apos, _, path, constraint) } private newtype TRelevantAccess = @@ -1289,12 +1541,13 @@ module Make1 Input1> { RelevantAccess() { this = MkRelevantAccess(a, apos, e, path) } + pragma[nomagic] Type getTypeAt(TypePath suffix) { result = a.getInferredType(e, apos, path.appendInverse(suffix)) } /** Gets the constraint that this relevant access should satisfy. */ - Type getConstraint(Declaration target) { + TypeMention getConstraint(Declaration target) { relevantAccessConstraint(a, e, target, apos, path, result) } @@ -1305,22 +1558,64 @@ module Make1 Input1> { Location getLocation() { result = a.getLocation() } } - private module SatisfiesConstraintInput implements - SatisfiesConstraintInputSig + private module SatisfiesTypeParameterConstraintInput implements + SatisfiesConstraintWithTypeMatchingInputSig { - predicate relevantConstraint(RelevantAccess at, Type constraint) { + predicate relevantConstraint(RelevantAccess at, TypeMention constraint) { constraint = at.getConstraint(_) } + + class TypeMatchingContext = Access; + + TypeMatchingContext getTypeMatchingContext(RelevantAccess at) { + at = MkRelevantAccess(result, _, _, _) + } + + pragma[nomagic] + predicate typeMatch(TypeMatchingContext ctx, TypeParameter tp, TypePath path, Type t) { + typeMatch(ctx, _, _, path, t, tp) + } + } + + private module SatisfiesTypeParameterConstraint = + SatisfiesConstraintWithTypeMatching; + + pragma[nomagic] + predicate satisfiesConstraintAtTypeParameter( + Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, + TypeMention constraint, TypePath pathToTypeParamInConstraint, + TypePath pathToTypeParamInSub + ) { + exists(RelevantAccess ra | + ra = MkRelevantAccess(a, apos, e, prefix) and + SatisfiesTypeParameterConstraint::satisfiesConstraintAtTypeParameter(ra, constraint, + pathToTypeParamInConstraint, pathToTypeParamInSub) and + constraint = ra.getConstraint(target) + ) + } + + pragma[nomagic] + predicate satisfiesConstraint( + Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, + TypeMention constraint, TypePath path, Type t + ) { + exists(RelevantAccess ra | + ra = MkRelevantAccess(a, apos, e, prefix) and + SatisfiesTypeParameterConstraint::satisfiesConstraint(ra, constraint, path, t) and + constraint = ra.getConstraint(target) + ) } - predicate satisfiesConstraintType( + pragma[nomagic] + predicate satisfiesConstraintThrough( Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, - Type constraint, TypePath path, Type t + TypeAbstraction abs, TypeMention constraint, TypePath path, Type t ) { exists(RelevantAccess ra | ra = MkRelevantAccess(a, apos, e, prefix) and - SatisfiesConstraint::satisfiesConstraintType(ra, - constraint, path, t) and + SatisfiesTypeParameterConstraint::satisfiesConstraintThrough(ra, abs, constraint, path, + t) and constraint = ra.getConstraint(target) ) } @@ -1410,6 +1705,24 @@ module Make1 Input1> { t = getTypeArgument(a, target, tp, path) } + /** + * Holds if the type parameter `constrainedTp` occurs in the declared type of + * `target` at `apos` and `pathToConstrained`, and there is a constraint + * `constraint` on `constrainedTp`. + */ + pragma[nomagic] + private predicate typeParameterHasConstraint( + Declaration target, AccessPosition apos, TypeParameter constrainedTp, + TypePath pathToConstrained, TypeMention constraint + ) { + exists(DeclarationPosition dpos | + accessDeclarationPositionMatch(apos, dpos) and + constrainedTp = target.getTypeParameter(_) and + constrainedTp = target.getDeclaredType(dpos, pathToConstrained) and + constraint = getATypeParameterConstraint(constrainedTp, target) + ) + } + /** * Holds if the declared type of `target` contains a type parameter at * `apos` and `pathToConstrained` that must satisfy `constraint` and `tp` @@ -1429,17 +1742,14 @@ module Make1 Input1> { */ pragma[nomagic] private predicate typeParameterConstraintHasTypeParameter( - Declaration target, AccessPosition apos, TypePath pathToConstrained, Type constraint, + Declaration target, AccessPosition apos, TypePath pathToConstrained, TypeMention constraint, TypePath pathToTp, TypeParameter tp ) { - exists(DeclarationPosition dpos, TypeParameter constrainedTp | - accessDeclarationPositionMatch(apos, dpos) and - constrainedTp = target.getTypeParameter(_) and + exists(TypeParameter constrainedTp | + typeParameterHasConstraint(target, apos, constrainedTp, pathToConstrained, constraint) and tp = target.getTypeParameter(_) and - tp = getATypeParameterConstraint(constrainedTp, pathToTp) and - constrainedTp != tp and - constrainedTp = target.getDeclaredType(dpos, pathToConstrained) and - constraint = getATypeParameterConstraint(constrainedTp, TypePath::nil()) + tp = constraint.getTypeAt(pathToTp) and + constrainedTp != tp ) } @@ -1448,9 +1758,9 @@ module Make1 Input1> { Access a, AccessEnvironment e, Declaration target, TypePath path, Type t, TypeParameter tp ) { not exists(getTypeArgument(a, target, tp, _)) and - exists(Type constraint, AccessPosition apos, TypePath pathToTp, TypePath pathToTp2 | + exists(TypeMention constraint, AccessPosition apos, TypePath pathToTp, TypePath pathToTp2 | typeParameterConstraintHasTypeParameter(target, apos, pathToTp2, constraint, pathToTp, tp) and - AccessConstraint::satisfiesConstraintType(a, e, target, apos, pathToTp2, constraint, + AccessConstraint::satisfiesConstraint(a, e, target, apos, pathToTp2, constraint, pathToTp.appendInverse(path), t) ) } @@ -1528,6 +1838,82 @@ module Make1 Input1> { not result instanceof TypeParameter ) ) + or + exists( + Declaration target, TypePath prefix, TypeMention constraint, + TypePath pathToTypeParamInConstraint, TypePath pathToTypeParamInSub + | + AccessConstraint::satisfiesConstraintAtTypeParameter(a, e, target, apos, prefix, + constraint, pathToTypeParamInConstraint, pathToTypeParamInSub) + | + exists(TypePath suffix | + /* + * Example: + * + * ```rust + * struct MyThing { ... } + * + * trait MyTrait { ... } + * + * impl MyTrait for MyThing { ... } + * + * fn foo>(x: T) { ... } + * + * let x = MyThing(Default::default()); + * foo(x); + * ``` + * + * At `term` = `foo(x)`, we have + * - `constraint = MyTrait`, + * - `pathToTypeParamInConstraint` = `"B"`, + * - `pathToTypeParamInSub` = `"A"`, + * - `prefix` = `suffix` = `""`, and + * - `result` = `i32`. + * + * That is, it allows us to infer that the type of `x` is `MyThing`. + */ + + result = constraint.getTypeAt(pathToTypeParamInConstraint.appendInverse(suffix)) and + not result instanceof TypeParameter and + path = prefix.append(pathToTypeParamInSub.append(suffix)) + ) + or + exists(TypeParameter tp, TypePath suffix, TypePath mid, TypePath pathToTp | + /* + * Example: + * + * ```rust + * struct MyThing { ... } + * + * trait MyTrait { ... } + * + * impl MyTrait for MyThing { ... } + * + * fn bar>(x: T1, y: T2) {} + * + * let x : i32 = ...; + * let y = MyThing(Default::default()); + * bar(x, y); + * ``` + * + * At `term` = `bar(x, y)`, we have + * - `constraint = MyTrait`, + * - `pathToTypeParamInConstraint` = `"B"`, + * - `pathToTypeParamInSub` = `"A"`, + * - `prefix` = `suffix` = `mid` = `""`, + * - `tp = T1`, + * - `pathToTp` = `"B"`, and + * - `result` = `i32`. + * + * That is, it allows us to infer that the type of `y` is `MyThing`. + */ + + typeMatch(a, e, target, suffix, result, tp) and + typeParameterConstraintHasTypeParameter(target, apos, _, constraint, pathToTp, tp) and + pathToTp = pathToTypeParamInConstraint.appendInverse(mid) and + path = prefix.append(pathToTypeParamInSub.append(mid).append(suffix)) + ) + ) } } @@ -1566,6 +1952,15 @@ module Make1 Input1> { Type getDeclaredType(DeclarationPosition dpos, TypePath path); } + /** + * Gets a type constraint on the type parameter `tp` that applies to `decl`, + * if any. + */ + bindingset[decl] + default TypeMention getATypeParameterConstraint(TypeParameter tp, Declaration decl) { + result = getATypeParameterConstraint(tp) + } + /** * A position inside an access. For example, the integer position of an * argument inside a method call. @@ -1623,6 +2018,8 @@ module Make1 Input1> { private import codeql.util.Unit import Input + predicate getATypeParameterConstraint = Input::getATypeParameterConstraint/2; + class AccessEnvironment = Unit; final private class AccessFinal = Input::Access; diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index 278398e24879..97c8df368959 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.25 +version: 0.0.29-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 553f1b75bfdb..f779002267aa 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.31 + +No user-facing changes. + +## 2.0.30 + +No user-facing changes. + +## 2.0.29 + +No user-facing changes. + ## 2.0.28 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.29.md b/shared/typetracking/change-notes/released/2.0.29.md new file mode 100644 index 000000000000..c8e5d5c3d050 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.29.md @@ -0,0 +1,3 @@ +## 2.0.29 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.30.md b/shared/typetracking/change-notes/released/2.0.30.md new file mode 100644 index 000000000000..607e69a62596 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.30.md @@ -0,0 +1,3 @@ +## 2.0.30 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.31.md b/shared/typetracking/change-notes/released/2.0.31.md new file mode 100644 index 000000000000..b3cd05e3de4d --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.31.md @@ -0,0 +1,3 @@ +## 2.0.31 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index ec5bd6ba3691..783d47207cda 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.28 +lastReleaseVersion: 2.0.31 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 3c3316da7fca..aa0296875312 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.28 +version: 2.0.32-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 277af7bfafe8..b49f756fef03 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.45.md b/shared/typos/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.46.md b/shared/typos/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.47.md b/shared/typos/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 56557152de70..37fc79bb1dfd 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 4f086cb994a0..cb3ac7bbe797 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.34 + +No user-facing changes. + +## 2.0.33 + +No user-facing changes. + +## 2.0.32 + +No user-facing changes. + ## 2.0.31 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.32.md b/shared/util/change-notes/released/2.0.32.md new file mode 100644 index 000000000000..0930bb07f8c4 --- /dev/null +++ b/shared/util/change-notes/released/2.0.32.md @@ -0,0 +1,3 @@ +## 2.0.32 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.33.md b/shared/util/change-notes/released/2.0.33.md new file mode 100644 index 000000000000..d33a61332cf3 --- /dev/null +++ b/shared/util/change-notes/released/2.0.33.md @@ -0,0 +1,3 @@ +## 2.0.33 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.34.md b/shared/util/change-notes/released/2.0.34.md new file mode 100644 index 000000000000..fd170d38ce6d --- /dev/null +++ b/shared/util/change-notes/released/2.0.34.md @@ -0,0 +1,3 @@ +## 2.0.34 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 783d47207cda..339a3ce7c57a 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.31 +lastReleaseVersion: 2.0.34 diff --git a/shared/util/codeql/util/Option.qll b/shared/util/codeql/util/Option.qll index 77cc89504f58..2be9e10fef5f 100644 --- a/shared/util/codeql/util/Option.qll +++ b/shared/util/codeql/util/Option.qll @@ -56,6 +56,9 @@ module Option { /** Gets the given element wrapped as an `Option`. */ Some some(T c) { result = TSome(c) } + + /** Gets the `None` value. */ + None none_() { any() } } /** diff --git a/shared/util/codeql/util/UnboundList.qll b/shared/util/codeql/util/UnboundList.qll index 79fac6506d6a..6f05d6cddfc2 100644 --- a/shared/util/codeql/util/UnboundList.qll +++ b/shared/util/codeql/util/UnboundList.qll @@ -167,6 +167,14 @@ module Make Input> { */ bindingset[this] UnboundList getAPrefix() { result = [this, this.getAProperPrefix()] } + + /** + * Holds if this list is a prefix of `other`. + * + * This is equivalent to `this = other.getAPrefix()`, but more performant. + */ + bindingset[this, other] + predicate isPrefixOf(UnboundList other) { this = other.prefix(this.stringLength()) } } /** Provides predicates for constructing `UnboundList`s. */ diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index b7e3b89b39ea..02e6241dccbf 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.31 +version: 2.0.35-dev groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index ecdc24c85bed..98702251320c 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.45.md b/shared/xml/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.46.md b/shared/xml/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.47.md b/shared/xml/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 33bf92658f8c..0d75859bdb9d 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 62c04d103a47..4a41f8ee9dfe 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.47 + +No user-facing changes. + +## 1.0.46 + +No user-facing changes. + +## 1.0.45 + +No user-facing changes. + ## 1.0.44 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.45.md b/shared/yaml/change-notes/released/1.0.45.md new file mode 100644 index 000000000000..774efbbb2278 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.45.md @@ -0,0 +1,3 @@ +## 1.0.45 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.46.md b/shared/yaml/change-notes/released/1.0.46.md new file mode 100644 index 000000000000..0f8a86659fd3 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.46.md @@ -0,0 +1,3 @@ +## 1.0.46 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.47.md b/shared/yaml/change-notes/released/1.0.47.md new file mode 100644 index 000000000000..0c12039c1809 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.47.md @@ -0,0 +1,3 @@ +## 1.0.47 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 59728e639805..dcec0f6405ab 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.44 +lastReleaseVersion: 1.0.47 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index ac65e0bcb80c..cfea54e0b5b5 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.44 +version: 1.0.48-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/builtin_fixed_array_types.ql b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/builtin_fixed_array_types.ql new file mode 100644 index 000000000000..8a678cc40dab --- /dev/null +++ b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/builtin_fixed_array_types.ql @@ -0,0 +1,7 @@ +class BuiltinFixedArrayType extends @builtin_fixed_array_type { + string toString() { none() } +} + +from BuiltinFixedArrayType builtinFixedArrayType +where builtin_fixed_array_types(builtinFixedArrayType, _, _) +select builtinFixedArrayType diff --git a/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/old.dbscheme b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/old.dbscheme new file mode 100644 index 000000000000..5738be6bb047 --- /dev/null +++ b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/old.dbscheme @@ -0,0 +1,2891 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_generic_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +@builtin_generic_type = + @builtin_fixed_array_type +; + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type, + int size: @type_or_none ref, + int element_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/swift.dbscheme b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/swift.dbscheme new file mode 100644 index 000000000000..ee3053b673c9 --- /dev/null +++ b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/swift.dbscheme @@ -0,0 +1,2889 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_generic_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +@builtin_generic_type = + @builtin_fixed_array_type +; + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/upgrade.properties b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/upgrade.properties new file mode 100644 index 000000000000..0e7d432a3500 --- /dev/null +++ b/swift/downgrades/5738be6bb04742c424efdbf9f4de11f0b10fa37d/upgrade.properties @@ -0,0 +1,3 @@ +description: Support BuiltinFixedArrayType arguments +compatibility: full +builtin_fixed_array_types.rel: run builtin_fixed_array_types.qlo diff --git a/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/old.dbscheme b/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/old.dbscheme new file mode 100644 index 000000000000..ee3053b673c9 --- /dev/null +++ b/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/old.dbscheme @@ -0,0 +1,2889 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_generic_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +@builtin_generic_type = + @builtin_fixed_array_type +; + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/swift.dbscheme b/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/swift.dbscheme new file mode 100644 index 000000000000..33e5e5e03bd3 --- /dev/null +++ b/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/swift.dbscheme @@ -0,0 +1,2885 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.properties b/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.properties new file mode 100644 index 000000000000..dfc606c6f143 --- /dev/null +++ b/swift/downgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.properties @@ -0,0 +1,2 @@ +description: Upgrade to Swift 6.3 +compatibility: full diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index f7825043edda..7ea1d58a5763 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -146,7 +146,6 @@ MAP(swift::Expr, ExprTag) MAP(swift::ImplicitConversionExpr, ImplicitConversionExprTag) MAP(swift::LoadExpr, LoadExprTag) MAP(swift::DestructureTupleExpr, DestructureTupleExprTag) - MAP(swift::UnresolvedTypeConversionExpr, UnresolvedTypeConversionExprTag) MAP(swift::FunctionConversionExpr, FunctionConversionExprTag) MAP(swift::CovariantFunctionConversionExpr, CovariantFunctionConversionExprTag) MAP(swift::CovariantReturnConversionExpr, CovariantReturnConversionExprTag) @@ -267,8 +266,7 @@ MAP(swift::TypeRepr, TypeReprTag) MAP(swift::Type, TypeTag) MAP(swift::TypeBase, TypeTag) MAP(swift::ErrorType, ErrorTypeTag) - MAP(swift::UnresolvedType, UnresolvedTypeTag) - MAP(swift::PlaceholderType, void) // appears in ambiguous types but are then transformed to UnresolvedType + MAP(swift::PlaceholderType, void) // appears in ambiguous types but are then transformed to ErrorType MAP(swift::BuiltinType, BuiltinTypeTag) MAP(swift::AnyBuiltinIntegerType, AnyBuiltinIntegerTypeTag) MAP(swift::BuiltinIntegerType, BuiltinIntegerTypeTag) @@ -285,7 +283,8 @@ MAP(swift::TypeBase, TypeTag) MAP(swift::BuiltinVectorType, BuiltinVectorTypeTag) MAP(swift::BuiltinPackIndexType, void) // SIL type, cannot really appear in the frontend run MAP(swift::BuiltinNonDefaultDistributedActorStorageType, void) // Does not appear in AST/SIL, only used during IRGen - MAP(swift::BuiltinFixedArrayType, BuiltinFixedArrayTypeTag) + MAP(swift::BuiltinGenericType, BuiltinGenericTypeTag) + MAP(swift::BuiltinFixedArrayType, BuiltinFixedArrayTypeTag) MAP(swift::BuiltinUnboundGenericType, void) // Only used during type resolution MAP(swift::BuiltinImplicitActorType, void) // SIL type MAP(swift::TupleType, TupleTypeTag) diff --git a/swift/extractor/mangler/SwiftMangler.cpp b/swift/extractor/mangler/SwiftMangler.cpp index 8d7d2a8a0658..e7dbda6ba914 100644 --- a/swift/extractor/mangler/SwiftMangler.cpp +++ b/swift/extractor/mangler/SwiftMangler.cpp @@ -40,8 +40,8 @@ std::string_view getTypeKindStr(const swift::TypeBase* type) { } // namespace -std::unordered_map - SwiftMangler::preloadedExtensionIndexes; +std::unordered_map + SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes; SwiftMangledName SwiftMangler::initMangled(const swift::TypeBase* type) { return {getTypeKindStr(type), '_'}; @@ -75,6 +75,12 @@ SwiftMangledName SwiftMangler::visitValueDecl(const swift::ValueDecl* decl, bool if (decl->isStatic()) { ret << "|static"; } + if (decl->getFormalAccess() == swift::AccessLevel::FilePrivate) { + auto parent = getParent(decl); + auto index = getExtensionOrFilePrivateValueIndex(decl, parent); + ret << "|fileprivate" << index.index + << (index.kind == ExtensionOrFilePrivateValueKind::clang ? "_clang" : ""); + } return ret; } @@ -105,51 +111,68 @@ SwiftMangledName SwiftMangler::visitExtensionDecl(const swift::ExtensionDecl* de auto parent = getParent(decl); auto target = decl->getExtendedType(); - auto index = getExtensionIndex(decl, parent); + auto index = getExtensionOrFilePrivateValueIndex(decl, parent); return initMangled(decl) << fetch(target) << index.index - << (index.kind == ExtensionKind::clang ? "_clang" : ""); + << (index.kind == ExtensionOrFilePrivateValueKind::clang ? "_clang" + : ""); } -SwiftMangler::ExtensionIndex SwiftMangler::getExtensionIndex(const swift::ExtensionDecl* decl, - const swift::Decl* parent) { - // to avoid iterating multiple times on the parent of multiple extensions, we preload extension - // indexes once for each encountered parent into the `preloadedExtensionIndexes` mapping. - if (auto found = SwiftMangler::preloadedExtensionIndexes.find(decl); - found != SwiftMangler::preloadedExtensionIndexes.end()) { +SwiftMangler::ExtensionOrFilePrivateValueIndex SwiftMangler::getExtensionOrFilePrivateValueIndex( + const swift::Decl* decl, + const swift::Decl* parent) { + // to avoid iterating multiple times on the parent, we preload the indexes once for each + // encountered parent. + if (auto found = SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes.find(decl); + found != SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes.end()) { return found->second; } if (auto parentModule = llvm::dyn_cast(parent)) { llvm::SmallVector siblings; parentModule->getTopLevelDecls(siblings); - indexExtensions(siblings); + indexExtensionsAndFilePrivateValues(siblings); if (auto clangModule = parentModule->findUnderlyingClangModule()) { - indexClangExtensions(clangModule, decl->getASTContext().getClangModuleLoader()); + indexClangExtensionsAndFilePrivateValues(clangModule, + decl->getASTContext().getClangModuleLoader()); } } else if (auto iterableParent = llvm::dyn_cast(parent)) { - indexExtensions(iterableParent->getAllMembers()); + indexExtensionsAndFilePrivateValues(iterableParent->getAllMembers()); } else { // TODO use a generic logging handle for Swift entities here, once it's available CODEQL_ASSERT(false, "non-local context must be module or iterable decl context"); } - auto found = SwiftMangler::preloadedExtensionIndexes.find(decl); + auto found = SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes.find(decl); // TODO use a generic logging handle for Swift entities here, once it's available - CODEQL_ASSERT(found != SwiftMangler::preloadedExtensionIndexes.end(), - "extension not found within parent"); + CODEQL_ASSERT(found != SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes.end(), + "declaration not found within parent"); return found->second; } -void SwiftMangler::indexExtensions(llvm::ArrayRef siblings) { +bool SwiftMangler::isExtensionOrFilePrivateValue(const swift::Decl* decl) { + if (decl->getKind() == swift::DeclKind::Extension) { + return true; + } + + if (const auto* valueDecl = swift::dyn_cast(decl)) { + return valueDecl->getFormalAccess() == swift::AccessLevel::FilePrivate; + } + + return false; +} + +void SwiftMangler::indexExtensionsAndFilePrivateValues(llvm::ArrayRef siblings) { auto index = 0u; for (auto sibling : siblings) { - if (sibling->getKind() == swift::DeclKind::Extension) { - SwiftMangler::preloadedExtensionIndexes.try_emplace(sibling, ExtensionKind::swift, index); + if (isExtensionOrFilePrivateValue(sibling)) { + SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes.try_emplace( + sibling, ExtensionOrFilePrivateValueKind::swift, index); index++; } } } -void SwiftMangler::indexClangExtensions(const clang::Module* clangModule, - swift::ClangModuleLoader* moduleLoader) { +void SwiftMangler::indexClangExtensionsAndFilePrivateValues( + const clang::Module* clangModule, + swift::ClangModuleLoader* moduleLoader) { if (!moduleLoader) { return; } @@ -160,8 +183,9 @@ void SwiftMangler::indexClangExtensions(const clang::Module* clangModule, llvm::SmallVector children; swiftSubmodule->getTopLevelDecls(children); for (const auto child : children) { - if (child->getKind() == swift::DeclKind::Extension) { - SwiftMangler::preloadedExtensionIndexes.try_emplace(child, ExtensionKind::clang, index); + if (isExtensionOrFilePrivateValue(child)) { + SwiftMangler::preloadedExtensionOrFilePrivateValueIndexes.try_emplace( + child, ExtensionOrFilePrivateValueKind::clang, index); index++; } } @@ -202,6 +226,14 @@ SwiftMangledName SwiftMangler::visitBuiltinType(const swift::BuiltinType* type) return initMangled(type) << type->getTypeName(buffer, /* prependBuiltinNamespace= */ false); } +SwiftMangledName SwiftMangler::visitBuiltinFixedArrayType( + const swift::BuiltinFixedArrayType* type) { + auto ret = visitBuiltinType(type); + ret << fetch(type->getSize()); + ret << fetch(type->getElementType()); + return ret; +} + SwiftMangledName SwiftMangler::visitAnyGenericType(const swift::AnyGenericType* type) { auto ret = initMangled(type); auto decl = type->getDecl(); @@ -240,9 +272,6 @@ SwiftMangledName SwiftMangler::visitAnyFunctionType(const swift::AnyFunctionType if (flags.isNonEphemeral()) { ret << "_nonephermeral"; } - if (flags.isIsolated()) { - ret << "_isolated"; - } if (flags.isSending()) { ret << "_sending"; } @@ -309,9 +338,13 @@ SwiftMangledName SwiftMangler::visitAnyFunctionType(const swift::AnyFunctionType if (type->hasGlobalActor()) { ret << "_actor" << fetch(type->getGlobalActor()); } - if (type->getIsolation().isErased()) { + const auto& isolation = type->getIsolation(); + if (isolation.isErased()) { ret << "_isolated"; } + if (isolation.isNonIsolatedCaller()) { + ret << "_nonisolatednonsending"; + } // TODO: see if this needs to be used in identifying types, if not it needs to be removed from // type printing in the Swift compiler code assert(type->hasExtInfo() && "type must have ext info"); @@ -423,7 +456,13 @@ SwiftMangledName SwiftMangler::visitArchetypeType(const swift::ArchetypeType* ty SwiftMangledName SwiftMangler::visitOpaqueTypeArchetypeType( const swift::OpaqueTypeArchetypeType* type) { - return visitArchetypeType(type) << fetch(type->getDecl()); + auto ret = visitArchetypeType(type) << fetch(type->getDecl()); + ret << '<'; + for (auto replacement : type->getSubstitutions().getReplacementTypes()) { + ret << fetch(replacement); + } + ret << '>'; + return ret; } SwiftMangledName SwiftMangler::visitExistentialArchetypeType( diff --git a/swift/extractor/mangler/SwiftMangler.h b/swift/extractor/mangler/SwiftMangler.h index caf70718633e..92175b5887b3 100644 --- a/swift/extractor/mangler/SwiftMangler.h +++ b/swift/extractor/mangler/SwiftMangler.h @@ -71,6 +71,7 @@ class SwiftMangler : private swift::TypeVisitor, SwiftMangledName visitModuleType(const swift::ModuleType* type); SwiftMangledName visitTupleType(const swift::TupleType* type); SwiftMangledName visitBuiltinType(const swift::BuiltinType* type); + SwiftMangledName visitBuiltinFixedArrayType(const swift::BuiltinFixedArrayType* type); SwiftMangledName visitAnyGenericType(const swift::AnyGenericType* type); // shouldn't be required, but they forgot to link `NominalType` to its direct superclass @@ -106,26 +107,29 @@ class SwiftMangler : private swift::TypeVisitor, SwiftMangledName visitPackExpansionType(const swift::PackExpansionType* type); private: - enum class ExtensionKind : bool { + enum class ExtensionOrFilePrivateValueKind : bool { swift, clang, }; - struct ExtensionIndex { - const ExtensionKind kind : 1; + struct ExtensionOrFilePrivateValueIndex { + const ExtensionOrFilePrivateValueKind kind : 1; const uint32_t index : 31; }; - static std::unordered_map preloadedExtensionIndexes; + static std::unordered_map + preloadedExtensionOrFilePrivateValueIndexes; virtual SwiftMangledName fetch(const swift::Decl* decl) = 0; virtual SwiftMangledName fetch(const swift::TypeBase* type) = 0; SwiftMangledName fetch(swift::Type type) { return fetch(type.getPointer()); } - void indexExtensions(llvm::ArrayRef siblings); - void indexClangExtensions(const clang::Module* clangModule, - swift::ClangModuleLoader* moduleLoader); - ExtensionIndex getExtensionIndex(const swift::ExtensionDecl* decl, const swift::Decl* parent); + bool isExtensionOrFilePrivateValue(const swift::Decl* decl); + void indexExtensionsAndFilePrivateValues(llvm::ArrayRef siblings); + void indexClangExtensionsAndFilePrivateValues(const clang::Module* clangModule, + swift::ClangModuleLoader* moduleLoader); + ExtensionOrFilePrivateValueIndex getExtensionOrFilePrivateValueIndex(const swift::Decl* decl, + const swift::Decl* parent); static SwiftMangledName initMangled(const swift::TypeBase* type); SwiftMangledName initMangled(const swift::Decl* decl); SwiftMangledName visitTypeDiscriminatedValueDecl(const swift::ValueDecl* decl); diff --git a/swift/extractor/translators/StmtTranslator.cpp b/swift/extractor/translators/StmtTranslator.cpp index 1562c28f19c7..2b059682b331 100644 --- a/swift/extractor/translators/StmtTranslator.cpp +++ b/swift/extractor/translators/StmtTranslator.cpp @@ -137,7 +137,7 @@ codeql::CaseStmt StmtTranslator::translateCaseStmt(const swift::CaseStmt& stmt) auto entry = dispatcher.createEntry(stmt); entry.body = dispatcher.fetchLabel(stmt.getBody()); entry.labels = dispatcher.fetchRepeatedLabels(stmt.getCaseLabelItems()); - entry.variables = dispatcher.fetchRepeatedLabels(stmt.getCaseBodyVariablesOrEmptyArray()); + entry.variables = dispatcher.fetchRepeatedLabels(stmt.getCaseBodyVariables()); return entry; } diff --git a/swift/extractor/translators/TypeTranslator.cpp b/swift/extractor/translators/TypeTranslator.cpp index 52d17c7a3577..ccd1a84f3cf9 100644 --- a/swift/extractor/translators/TypeTranslator.cpp +++ b/swift/extractor/translators/TypeTranslator.cpp @@ -233,6 +233,14 @@ codeql::BuiltinIntegerType TypeTranslator::translateBuiltinIntegerType( return entry; } +codeql::BuiltinFixedArrayType TypeTranslator::translateBuiltinFixedArrayType( + const swift::BuiltinFixedArrayType& type) { + auto entry = createTypeEntry(type); + entry.size = dispatcher.fetchLabel(type.getSize()); + entry.element_type = dispatcher.fetchLabel(type.getElementType()); + return entry; +} + codeql::ExistentialArchetypeType TypeTranslator::translateExistentialArchetypeType( const swift::ExistentialArchetypeType& type) { auto entry = createTypeEntry(type); @@ -258,10 +266,6 @@ codeql::ErrorType TypeTranslator::translateErrorType(const swift::ErrorType& typ return createTypeEntry(type); } -codeql::UnresolvedType TypeTranslator::translateUnresolvedType(const swift::UnresolvedType& type) { - return createTypeEntry(type); -} - codeql::ParameterizedProtocolType TypeTranslator::translateParameterizedProtocolType( const swift::ParameterizedProtocolType& type) { auto entry = createTypeEntry(type); diff --git a/swift/extractor/translators/TypeTranslator.h b/swift/extractor/translators/TypeTranslator.h index c65c0e757dec..fd211ec39e09 100644 --- a/swift/extractor/translators/TypeTranslator.h +++ b/swift/extractor/translators/TypeTranslator.h @@ -69,13 +69,14 @@ class TypeTranslator : public TypeTranslatorBase { codeql::BuiltinIntegerLiteralType translateBuiltinIntegerLiteralType( const swift::BuiltinIntegerLiteralType& type); codeql::BuiltinIntegerType translateBuiltinIntegerType(const swift::BuiltinIntegerType& type); + codeql::BuiltinFixedArrayType translateBuiltinFixedArrayType( + const swift::BuiltinFixedArrayType& type); codeql::ExistentialArchetypeType translateExistentialArchetypeType( const swift::ExistentialArchetypeType& type); codeql::ModuleType translateModuleType(const swift::ModuleType& type); codeql::OpaqueTypeArchetypeType translateOpaqueTypeArchetypeType( const swift::OpaqueTypeArchetypeType& type); codeql::ErrorType translateErrorType(const swift::ErrorType& type); - codeql::UnresolvedType translateUnresolvedType(const swift::UnresolvedType& type); codeql::ParameterizedProtocolType translateParameterizedProtocolType( const swift::ParameterizedProtocolType& type); codeql::PackArchetypeType translatePackArchetypeType(const swift::PackArchetypeType& type); diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 8d2fb9a2ebca..ea1cb6f571b2 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -539,8 +539,9 @@ lib/codeql/swift/elements/type/BoundGenericType.qll 089e5e8d09c62a23d575dcab68cd lib/codeql/swift/elements/type/BuiltinBridgeObjectType.qll b0064e09b53efe801b0bf950ff00698a84e2f714e853e4859ed5f3246025a1bd aa14b6ae2ec510c4ddd2cc073bf971809536ab8fd8763fd05bd171b0bbe83860 lib/codeql/swift/elements/type/BuiltinDefaultActorStorageType.qll e867a9d0b2c61b7eb61f5143c78e31f8d98d3245d79e0e3281d4c172175f496b 265e87f2e37ca968af572cc619294d1ee91dd66ebb0d1bb1ba9ab7159de52f0b lib/codeql/swift/elements/type/BuiltinExecutorType.qll 2b141553bbc02a00d97579ba9d0e38fa0978d40ce954b0caf64826aa259dbc08 a81465fd0e87ad5b8e418d8f21c337b3e96388a3b92b3332f0d6b0ff7663e5c7 -lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll 24a57f15a53070e6308841cd5dac4d55059e84d9fb18a77eec1130647dcdc97c 9f4167ef5190cbeee71abd068bdb0a280b690a16349cd408244d4cf9edfb357a +lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll d7ee816a646cde2be9141d89eadc86a144aa3f983d0562f1b478448b0bda54fc 95639bfde60f1401ca741e4930ab7f935b0aa4f4bdb7d8ec09cd2010037c0aca lib/codeql/swift/elements/type/BuiltinFloatType.qll 81f49325077b75cea682904ddab24d1b2fdc5c93b0b28830c08e866d5c9307a7 e26a348d66e3824ccd92729624ce2b2ebc82a844aa47035e0a963a62b08b772d +lib/codeql/swift/elements/type/BuiltinGenericType.qll 108682444f5f28b64b7caa16254fd4d7418813bc9e7f6a17477b13fe37293d40 de3fa330516684f0cfd848101b3a93f83b2d8a9f00b35dae70d2b56cb5414923 lib/codeql/swift/elements/type/BuiltinIntegerLiteralType.qll 34ee35733cf26f90d799a79f8a2362b199ea2ecb6ba83eb5678dda9eb3ed255f e33fdb27d3c22d441277b66ba74136cb88e1da25a2146391b258c68f7fbf5dd3 lib/codeql/swift/elements/type/BuiltinIntegerType.qll b931e79a40fb379a8de377ae4ea1c85befb7b07dbfe913f0ea7f5adf5514b217 5d7e6f21284b8c5ff70773bb64f896a40541c9064bfdd336798ccfda4cb4fb9e lib/codeql/swift/elements/type/BuiltinJobType.qll 4b4cab766d8476efd7482ab47f6fdd63fd90a322e1e791949351092f126f5b46 779ceee86a778b59a3feb5247603fe07e4a73068a7990e25c31dd93ba0dd718d @@ -623,6 +624,7 @@ lib/codeql/swift/elements/type/internal/BuiltinFixedArrayTypeConstructor.qll 0d5 lib/codeql/swift/elements/type/internal/BuiltinFixedArrayTypeImpl.qll 6b69ba8b271646bcd699e338f41c186f3e4e7d401830918407e392312b2f0ad1 ecaca3d762264423094f7c2cb63e33b5d72d970946766eec33d984fa977950b4 lib/codeql/swift/elements/type/internal/BuiltinFloatTypeConstructor.qll f1dab7b9d36213e57083a6effec1b2d859553831394c0e746c592c96a20db6de cceeaa864cfc84511b3cdad6a88d44fc14ea1c8e38db72b0854c3f217a3f9c44 lib/codeql/swift/elements/type/internal/BuiltinFloatTypeImpl.qll 1dc7f7817c4a238751875b0cee98d060a1ea975a22fd90ceef0f9874b85824d6 d98f743c28174fb3294f0ff60232600a4fc80aeefe72e5cc15bb56e09880ec1e +lib/codeql/swift/elements/type/internal/BuiltinGenericTypeImpl.qll 2735ef1521c399540ef43fc75aa62b4bbb1871446d87304c9e3a991ad16a96f4 263e41354843afc5d1f57bd2f50610992d05d77ceb1c2079587ddd3a1eceffc5 lib/codeql/swift/elements/type/internal/BuiltinIntegerLiteralTypeConstructor.qll 3885775f78e18286aa8dc99ab5b6f386a278b34b47f93da28d67faac918e6087 93be2ad0b7235bab613b74582bc1de0ca8b2a4da7a387d09a9b8ef9b38095534 lib/codeql/swift/elements/type/internal/BuiltinIntegerLiteralTypeImpl.qll 7f078bd837acddd0e835f78b0ae6e0381c9c587e82edc61cf78986ce0081e314 f141415be39f8a5f09d4a90cc5d841f90385c3be8781c0bafbad0871681ec8a3 lib/codeql/swift/elements/type/internal/BuiltinIntegerTypeConstructor.qll 2c5a7884c5c8c852d81b6ce03f9c6cc036944428731e3a73208c0d2047b72611 abd29915698109395a4751999aa334ba3c020f20372a5dff213acdd672d024a9 @@ -721,7 +723,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898 lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633 -lib/codeql/swift/elements.qll ec0104a658330f595eac7dd8578d996905a6c2cf78765744c3967a8f3d1c3273 ec0104a658330f595eac7dd8578d996905a6c2cf78765744c3967a8f3d1c3273 +lib/codeql/swift/elements.qll 70e20ccd31c9247904fb5ef00ccbda5a6d29c680e88b0ed238f4b4546abf5f33 70e20ccd31c9247904fb5ef00ccbda5a6d29c680e88b0ed238f4b4546abf5f33 lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99 lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de lib/codeql/swift/generated/AvailabilitySpec.qll 1bd2a0ee085f802c99090e681ab3339fc5013024d79deef39f376de12ab76d37 658f2eb51860726cfa6808b3e3501d624e0734750d1420f7a25c89782f1f6c7e @@ -737,10 +739,10 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/ParentChild.qll 7fdc133bdec6cc223d5ee85e757b02c5d2e1ab121bcf269bb48c8a12a31a61e9 d8dd6e21d290a293db4db510b1523a9ea428b12f48b7574f03acf00b9ca065ef +lib/codeql/swift/generated/ParentChild.qll 669d39245f2cb735cfd4bcebdb551ef8f334fef5297c5834a8b09ebfa655856e 59b283c8a30b6b364c853302ab919ea713e0289e7b793b08b46fc87178d14a6a lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll 6adc2ec210e91051b6d3d6c84117b827f10dbea682a18b69348d1c6cdc53629c 9ff02fcca7a7b83c85303ffc6daa00ea392da6ce1f9cb389b5053b34d4a45e4c -lib/codeql/swift/generated/Synth.qll b0084d1f573ba1b10ec8a8fab169b15f15866ecb9a6aeeeac81553a442be28e3 09efe455f3fd6b8b983b30efbd797f09af46e6f5a1a1075801650528999ed938 +lib/codeql/swift/generated/Raw.qll 0090c6509cb3fa5a67c996a2fc22e6338caef19701ca19463965b55b3c63096f 578329fa3abbabbadbff5e364e9c8d7ad76b41d4c17ad76e0660d41f48746659 +lib/codeql/swift/generated/Synth.qll e30b50d2645d9c36719d81f1be70712c7c6e89a3f5b4a5ae894411e045d05bff 9bd0c9c90532db97cde9553dde4089b7cf12c462c690d853fa40cb36ea112c21 lib/codeql/swift/generated/SynthConstructors.qll c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd @@ -978,8 +980,9 @@ lib/codeql/swift/generated/type/BoundGenericType.qll 5e7a2210b766437ca301f9675f7 lib/codeql/swift/generated/type/BuiltinBridgeObjectType.qll 97f30768a8788ec4547ce8a8f06fdd165286177e3819bf2e6590b9479f5bada4 ea3161c34d1d18783b38deac43c73048e4510015307d93f77cd95c149e988846 lib/codeql/swift/generated/type/BuiltinDefaultActorStorageType.qll 10e49de9a8bc3e67285c111f7869c8baceb70e478661d5557ebc8c86f41b4aec 1a0ce85eb325f666fbc2ac49c6f994efd552de6f2105e0a7ba9a10e39f3d1591 lib/codeql/swift/generated/type/BuiltinExecutorType.qll 8f58d4d413910aded894bfa9b54748adfc2b78f4ee271ac6db5f5b0214f36a66 69da70d76146155529b7b2426b3a459abe318f887240aac1aed5719fda5f386a -lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll 9bd26596da9137b07324222c9ed39ec0781e44673314fba96a0c7cf16f65cc7d cc2d40961b070a89f3350ab95b92ae33372277e499d7b2a9ea34721cc1fe1923 +lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll 96ff3c5b77ecc92689879c211dce7d6f7a4e3288ff168ac31a723ecf9619da9e c4abf2e438e3924f2b412d78178faf2384004f589caf0ccbdc1f3e712a211a4a lib/codeql/swift/generated/type/BuiltinFloatType.qll 6306a806107bba052fe0b1335c8c4d4391cdb6aa5f42f14c70743113928c4c36 3265d571630c0437e5d81ba20a0b6112b7e88ee3ffca737557186001cf8aa04a +lib/codeql/swift/generated/type/BuiltinGenericType.qll 6cd1b5da102e221f25a301c284ccc9cbd64d595596787df1a4fd3f2a92ded077 3ae4c8676a868205c5334646e395b8fc4e561ee2f4c115003ae2f4ed83197b76 lib/codeql/swift/generated/type/BuiltinIntegerLiteralType.qll 3f49aac9b81c440b902a658294cf95aff5cb79b0d6cee8b1abd8a08ad45c7966 6c184dcf5d9376f193f07fe4722ea7cab51f1dfdef4d72c3042842d73cca31fe lib/codeql/swift/generated/type/BuiltinIntegerType.qll 3cfcbc4ebea6051d1f6dedcf098888c72c02bf697cebb52a0060c1885bea61f0 1c78df7a184e3615024d6e361b88dd619828a0aa7d342564610a95b02cc67d1e lib/codeql/swift/generated/type/BuiltinJobType.qll dc0e1932e972936001b1d688d6e70d7395184eef3c4242cebf3a2608d6607785 e5573304f6043f79cfc28e35744fd390eaebcb86a6f2758cc96aba588c1b8cb9 @@ -1187,6 +1190,7 @@ test/extractor-tests/generated/type/ArraySliceType/MISSING_SOURCE.txt 35fb32ea53 test/extractor-tests/generated/type/BoundGenericClassType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/BoundGenericEnumType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/BoundGenericStructType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d +test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.ql fe912eb6996342dd1b7188f560567eab623b888c3160110235e20b2821aa6155 42050d820b80c5f65714ab2bdbc70791b37569e5a7b7839b5b1826a1bf4fe344 test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql 78d10029fa696ec4bcc48ea666923b98aa120a4a66004c491314f4abf283eac4 d23455d2ec38a1bba726d2e8fb349dfa2cdc52b8751d9caabb438d0dcdff6ab7 test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql 83a861b3ad63bed272f892031adc5bc651ed244cfcd53fc3090a2cea3f9d6a8d 197689774e28406b4bd798059fc57078695b43ca0833a7a4ef9dabd519e62d0d test/extractor-tests/generated/type/ClassType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index 37f29b6947ed..6810b5061d5c 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -543,6 +543,7 @@ /lib/codeql/swift/elements/type/BuiltinExecutorType.qll linguist-generated /lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll linguist-generated /lib/codeql/swift/elements/type/BuiltinFloatType.qll linguist-generated +/lib/codeql/swift/elements/type/BuiltinGenericType.qll linguist-generated /lib/codeql/swift/elements/type/BuiltinIntegerLiteralType.qll linguist-generated /lib/codeql/swift/elements/type/BuiltinIntegerType.qll linguist-generated /lib/codeql/swift/elements/type/BuiltinJobType.qll linguist-generated @@ -625,6 +626,7 @@ /lib/codeql/swift/elements/type/internal/BuiltinFixedArrayTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/BuiltinFloatTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/BuiltinFloatTypeImpl.qll linguist-generated +/lib/codeql/swift/elements/type/internal/BuiltinGenericTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/BuiltinIntegerLiteralTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/BuiltinIntegerLiteralTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/BuiltinIntegerTypeConstructor.qll linguist-generated @@ -982,6 +984,7 @@ /lib/codeql/swift/generated/type/BuiltinExecutorType.qll linguist-generated /lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll linguist-generated /lib/codeql/swift/generated/type/BuiltinFloatType.qll linguist-generated +/lib/codeql/swift/generated/type/BuiltinGenericType.qll linguist-generated /lib/codeql/swift/generated/type/BuiltinIntegerLiteralType.qll linguist-generated /lib/codeql/swift/generated/type/BuiltinIntegerType.qll linguist-generated /lib/codeql/swift/generated/type/BuiltinJobType.qll linguist-generated @@ -1189,6 +1192,7 @@ /test/extractor-tests/generated/type/BoundGenericClassType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/BoundGenericEnumType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/BoundGenericStructType/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.ql linguist-generated /test/extractor-tests/generated/type/BuiltinIntegerType/BuiltinIntegerType.ql linguist-generated /test/extractor-tests/generated/type/BuiltinType/BuiltinType.ql linguist-generated /test/extractor-tests/generated/type/ClassType/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected b/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected index 0f0a0220445b..1ca837955b63 100644 --- a/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected +++ b/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected @@ -4,6 +4,7 @@ | Builtin.FPIEEE64 | BuiltinFloatType | | Builtin.FixedArray<\u03c4_0_0, \u03c4_0_1> | BuiltinFixedArrayType | | Builtin.FixedArray | BuiltinFixedArrayType | +| Builtin.FixedArray | BuiltinFixedArrayType | | Builtin.Int1 | BuiltinIntegerType | | Builtin.Int8 | BuiltinIntegerType | | Builtin.Int16 | BuiltinIntegerType | diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index f105831909f4..3967689b9331 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 6.3.3 + +No user-facing changes. + +## 6.3.2 + +No user-facing changes. + +## 6.3.1 + +No user-facing changes. + ## 6.3.0 ### Major Analysis Improvements diff --git a/swift/ql/lib/change-notes/2026-04-06-swift-6.3.md b/swift/ql/lib/change-notes/2026-04-06-swift-6.3.md new file mode 100644 index 000000000000..512cb6139847 --- /dev/null +++ b/swift/ql/lib/change-notes/2026-04-06-swift-6.3.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.3. diff --git a/swift/ql/lib/change-notes/2026-04-17-fixed-array.md b/swift/ql/lib/change-notes/2026-04-17-fixed-array.md new file mode 100644 index 000000000000..3fd91627544b --- /dev/null +++ b/swift/ql/lib/change-notes/2026-04-17-fixed-array.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* The `BuiltinFixedArrayType` class now defines the predicates `getSize` and `getElementType`, which yield the size of the array and the type of elements stored in the array, respectively. diff --git a/swift/ql/lib/change-notes/2026-04-20-swift-6.3.1.md b/swift/ql/lib/change-notes/2026-04-20-swift-6.3.1.md new file mode 100644 index 000000000000..acc4bc73861a --- /dev/null +++ b/swift/ql/lib/change-notes/2026-04-20-swift-6.3.1.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.3.1. diff --git a/swift/ql/lib/change-notes/released/6.3.1.md b/swift/ql/lib/change-notes/released/6.3.1.md new file mode 100644 index 000000000000..de579ed3794f --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.3.1.md @@ -0,0 +1,3 @@ +## 6.3.1 + +No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.3.2.md b/swift/ql/lib/change-notes/released/6.3.2.md new file mode 100644 index 000000000000..dda44081bc39 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.3.2.md @@ -0,0 +1,3 @@ +## 6.3.2 + +No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.3.3.md b/swift/ql/lib/change-notes/released/6.3.3.md new file mode 100644 index 000000000000..86c54aaebb24 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.3.3.md @@ -0,0 +1,3 @@ +## 6.3.3 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index ae5210e925a5..83b98dcdbc38 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.3.0 +lastReleaseVersion: 6.3.3 diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll index c1ddb7f781f5..3a096fe3d576 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll @@ -168,7 +168,7 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element n, string input, Public::AcceptingValue acceptingvalue, string kind, + Element n, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { none() diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index bdffeba5261f..6a39c4657785 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -252,6 +252,7 @@ import codeql.swift.elements.type.BuiltinDefaultActorStorageType import codeql.swift.elements.type.BuiltinExecutorType import codeql.swift.elements.type.BuiltinFixedArrayType import codeql.swift.elements.type.BuiltinFloatType +import codeql.swift.elements.type.BuiltinGenericType import codeql.swift.elements.type.BuiltinIntegerLiteralType import codeql.swift.elements.type.BuiltinIntegerType import codeql.swift.elements.type.BuiltinJobType diff --git a/swift/ql/lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll b/swift/ql/lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll index bf523a0a7852..8723de5cc49d 100644 --- a/swift/ql/lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll +++ b/swift/ql/lib/codeql/swift/elements/type/BuiltinFixedArrayType.qll @@ -4,7 +4,8 @@ */ private import internal.BuiltinFixedArrayTypeImpl -import codeql.swift.elements.type.BuiltinType +import codeql.swift.elements.type.BuiltinGenericType +import codeql.swift.elements.type.Type /** * A builtin type representing N values stored contiguously. diff --git a/swift/ql/lib/codeql/swift/elements/type/BuiltinGenericType.qll b/swift/ql/lib/codeql/swift/elements/type/BuiltinGenericType.qll new file mode 100644 index 000000000000..4513423fd608 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/type/BuiltinGenericType.qll @@ -0,0 +1,12 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the public class `BuiltinGenericType`. + */ + +private import internal.BuiltinGenericTypeImpl +import codeql.swift.elements.type.BuiltinType + +/** + * A builtin generic type. + */ +final class BuiltinGenericType = Impl::BuiltinGenericType; diff --git a/swift/ql/lib/codeql/swift/elements/type/internal/BuiltinGenericTypeImpl.qll b/swift/ql/lib/codeql/swift/elements/type/internal/BuiltinGenericTypeImpl.qll new file mode 100644 index 000000000000..0e475d64f010 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/type/internal/BuiltinGenericTypeImpl.qll @@ -0,0 +1,19 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `BuiltinGenericType`. + * + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.type.BuiltinGenericType + +/** + * INTERNAL: This module contains the customizable definition of `BuiltinGenericType` and should not + * be referenced directly. + */ +module Impl { + /** + * A builtin generic type. + */ + class BuiltinGenericType extends Generated::BuiltinGenericType { } +} diff --git a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Security.qll b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Security.qll index d824d1bd3867..d31e21cc6320 100644 --- a/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Security.qll +++ b/swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Security.qll @@ -1,5 +1,5 @@ /** - * Provides models for standard library Swift classses related to security + * Provides models for standard library Swift classes related to security * (certificate, key and trust services). */ diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index efed12bb5fe0..424fd7af75e9 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -2972,12 +2972,6 @@ private module Impl { none() } - private Element getImmediateChildOfBuiltinFixedArrayType( - BuiltinFixedArrayType e, int index, string partialPredicateCall - ) { - none() - } - private Element getImmediateChildOfBuiltinFloatType( BuiltinFloatType e, int index, string partialPredicateCall ) { @@ -3084,6 +3078,12 @@ private module Impl { none() } + private Element getImmediateChildOfBuiltinFixedArrayType( + BuiltinFixedArrayType e, int index, string partialPredicateCall + ) { + none() + } + private Element getImmediateChildOfBuiltinIntegerLiteralType( BuiltinIntegerLiteralType e, int index, string partialPredicateCall ) { @@ -3636,8 +3636,6 @@ private module Impl { or result = getImmediateChildOfBuiltinExecutorType(e, index, partialAccessor) or - result = getImmediateChildOfBuiltinFixedArrayType(e, index, partialAccessor) - or result = getImmediateChildOfBuiltinFloatType(e, index, partialAccessor) or result = getImmediateChildOfBuiltinJobType(e, index, partialAccessor) @@ -3674,6 +3672,8 @@ private module Impl { or result = getImmediateChildOfWeakStorageType(e, index, partialAccessor) or + result = getImmediateChildOfBuiltinFixedArrayType(e, index, partialAccessor) + or result = getImmediateChildOfBuiltinIntegerLiteralType(e, index, partialAccessor) or result = getImmediateChildOfBuiltinIntegerType(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 714579218bcb..3e0fa95a327a 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -6293,24 +6293,18 @@ module Raw { /** * INTERNAL: Do not use. - * A builtin type representing N values stored contiguously. */ - class BuiltinFixedArrayType extends @builtin_fixed_array_type, BuiltinType { - override string toString() { result = "BuiltinFixedArrayType" } + class BuiltinFloatType extends @builtin_float_type, BuiltinType { + override string toString() { result = "BuiltinFloatType" } } - private Element getImmediateChildOfBuiltinFixedArrayType(BuiltinFixedArrayType e, int index) { - none() - } + private Element getImmediateChildOfBuiltinFloatType(BuiltinFloatType e, int index) { none() } /** * INTERNAL: Do not use. + * A builtin generic type. */ - class BuiltinFloatType extends @builtin_float_type, BuiltinType { - override string toString() { result = "BuiltinFloatType" } - } - - private Element getImmediateChildOfBuiltinFloatType(BuiltinFloatType e, int index) { none() } + class BuiltinGenericType extends @builtin_generic_type, BuiltinType { } /** * INTERNAL: Do not use. @@ -6537,6 +6531,28 @@ module Raw { int getNumberOfArgTypes() { result = count(int i | bound_generic_type_arg_types(this, i, _)) } } + /** + * INTERNAL: Do not use. + * A builtin type representing N values stored contiguously. + */ + class BuiltinFixedArrayType extends @builtin_fixed_array_type, BuiltinGenericType { + override string toString() { result = "BuiltinFixedArrayType" } + + /** + * Gets the size of this builtin fixed array type. + */ + Type getSize() { builtin_fixed_array_types(this, result, _) } + + /** + * Gets the element type of this builtin fixed array type. + */ + Type getElementType() { builtin_fixed_array_types(this, _, result) } + } + + private Element getImmediateChildOfBuiltinFixedArrayType(BuiltinFixedArrayType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -7224,8 +7240,6 @@ module Raw { or result = getImmediateChildOfBuiltinExecutorType(e, index) or - result = getImmediateChildOfBuiltinFixedArrayType(e, index) - or result = getImmediateChildOfBuiltinFloatType(e, index) or result = getImmediateChildOfBuiltinJobType(e, index) @@ -7262,6 +7276,8 @@ module Raw { or result = getImmediateChildOfWeakStorageType(e, index) or + result = getImmediateChildOfBuiltinFixedArrayType(e, index) + or result = getImmediateChildOfBuiltinIntegerLiteralType(e, index) or result = getImmediateChildOfBuiltinIntegerType(e, index) diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index 27508df94e97..cd847f3e6afd 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -1392,12 +1392,17 @@ module Synth { class TBoundGenericType = TBoundGenericClassType or TBoundGenericEnumType or TBoundGenericStructType; + /** + * INTERNAL: Do not use. + */ + class TBuiltinGenericType = TBuiltinFixedArrayType; + /** * INTERNAL: Do not use. */ class TBuiltinType = TAnyBuiltinIntegerType or TBuiltinBridgeObjectType or TBuiltinDefaultActorStorageType or - TBuiltinExecutorType or TBuiltinFixedArrayType or TBuiltinFloatType or TBuiltinJobType or + TBuiltinExecutorType or TBuiltinFloatType or TBuiltinGenericType or TBuiltinJobType or TBuiltinNativeObjectType or TBuiltinRawPointerType or TBuiltinRawUnsafeContinuationType or TBuiltinUnsafeValueBufferType or TBuiltinVectorType; @@ -4291,6 +4296,14 @@ module Synth { result = convertBoundGenericStructTypeFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TBuiltinGenericType`, if possible. + */ + TBuiltinGenericType convertBuiltinGenericTypeFromRaw(Raw::Element e) { + result = convertBuiltinFixedArrayTypeFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TBuiltinType`, if possible. @@ -4304,10 +4317,10 @@ module Synth { or result = convertBuiltinExecutorTypeFromRaw(e) or - result = convertBuiltinFixedArrayTypeFromRaw(e) - or result = convertBuiltinFloatTypeFromRaw(e) or + result = convertBuiltinGenericTypeFromRaw(e) + or result = convertBuiltinJobTypeFromRaw(e) or result = convertBuiltinNativeObjectTypeFromRaw(e) @@ -7037,6 +7050,14 @@ module Synth { result = convertBoundGenericStructTypeToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TBuiltinGenericType` to a raw DB element, if possible. + */ + Raw::Element convertBuiltinGenericTypeToRaw(TBuiltinGenericType e) { + result = convertBuiltinFixedArrayTypeToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TBuiltinType` to a raw DB element, if possible. @@ -7050,10 +7071,10 @@ module Synth { or result = convertBuiltinExecutorTypeToRaw(e) or - result = convertBuiltinFixedArrayTypeToRaw(e) - or result = convertBuiltinFloatTypeToRaw(e) or + result = convertBuiltinGenericTypeToRaw(e) + or result = convertBuiltinJobTypeToRaw(e) or result = convertBuiltinNativeObjectTypeToRaw(e) diff --git a/swift/ql/lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll b/swift/ql/lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll index b61533168b77..e7a2d0ef0d32 100644 --- a/swift/ql/lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll +++ b/swift/ql/lib/codeql/swift/generated/type/BuiltinFixedArrayType.qll @@ -6,7 +6,8 @@ private import codeql.swift.generated.Synth private import codeql.swift.generated.Raw -import codeql.swift.elements.type.internal.BuiltinTypeImpl::Impl as BuiltinTypeImpl +import codeql.swift.elements.type.internal.BuiltinGenericTypeImpl::Impl as BuiltinGenericTypeImpl +import codeql.swift.elements.type.Type /** * INTERNAL: This module contains the fully generated definition of `BuiltinFixedArrayType` and should not @@ -18,7 +19,55 @@ module Generated { * INTERNAL: Do not reference the `Generated::BuiltinFixedArrayType` class directly. * Use the subclass `BuiltinFixedArrayType`, where the following predicates are available. */ - class BuiltinFixedArrayType extends Synth::TBuiltinFixedArrayType, BuiltinTypeImpl::BuiltinType { + class BuiltinFixedArrayType extends Synth::TBuiltinFixedArrayType, + BuiltinGenericTypeImpl::BuiltinGenericType + { override string getAPrimaryQlClass() { result = "BuiltinFixedArrayType" } + + /** + * Gets the size of this builtin fixed array type. + * + * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the + * behavior of both the `Immediate` and non-`Immediate` versions. + */ + Type getImmediateSize() { + result = + Synth::convertTypeFromRaw(Synth::convertBuiltinFixedArrayTypeToRaw(this) + .(Raw::BuiltinFixedArrayType) + .getSize()) + } + + /** + * Gets the size of this builtin fixed array type. + */ + final Type getSize() { + exists(Type immediate | + immediate = this.getImmediateSize() and + if exists(this.getResolveStep()) then result = immediate else result = immediate.resolve() + ) + } + + /** + * Gets the element type of this builtin fixed array type. + * + * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the + * behavior of both the `Immediate` and non-`Immediate` versions. + */ + Type getImmediateElementType() { + result = + Synth::convertTypeFromRaw(Synth::convertBuiltinFixedArrayTypeToRaw(this) + .(Raw::BuiltinFixedArrayType) + .getElementType()) + } + + /** + * Gets the element type of this builtin fixed array type. + */ + final Type getElementType() { + exists(Type immediate | + immediate = this.getImmediateElementType() and + if exists(this.getResolveStep()) then result = immediate else result = immediate.resolve() + ) + } } } diff --git a/swift/ql/lib/codeql/swift/generated/type/BuiltinGenericType.qll b/swift/ql/lib/codeql/swift/generated/type/BuiltinGenericType.qll new file mode 100644 index 000000000000..cfed16ac2832 --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/type/BuiltinGenericType.qll @@ -0,0 +1,22 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the generated definition of `BuiltinGenericType`. + * INTERNAL: Do not import directly. + */ + +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.type.internal.BuiltinTypeImpl::Impl as BuiltinTypeImpl + +/** + * INTERNAL: This module contains the fully generated definition of `BuiltinGenericType` and should not + * be referenced directly. + */ +module Generated { + /** + * A builtin generic type. + * INTERNAL: Do not reference the `Generated::BuiltinGenericType` class directly. + * Use the subclass `BuiltinGenericType`, where the following predicates are available. + */ + class BuiltinGenericType extends Synth::TBuiltinGenericType, BuiltinTypeImpl::BuiltinType { } +} diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index d2983f8bd94c..32c6458ddeae 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.3.0 +version: 6.3.4-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index 33e5e5e03bd3..5738be6bb047 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -2266,8 +2266,8 @@ any_generic_type_parents( //dir=type | @builtin_bridge_object_type | @builtin_default_actor_storage_type | @builtin_executor_type -| @builtin_fixed_array_type | @builtin_float_type +| @builtin_generic_type | @builtin_job_type | @builtin_native_object_type | @builtin_raw_pointer_type @@ -2449,14 +2449,14 @@ builtin_executor_types( //dir=type unique int id: @builtin_executor_type ); -builtin_fixed_array_types( //dir=type - unique int id: @builtin_fixed_array_type -); - builtin_float_types( //dir=type unique int id: @builtin_float_type ); +@builtin_generic_type = + @builtin_fixed_array_type +; + builtin_job_types( //dir=type unique int id: @builtin_job_type ); @@ -2558,6 +2558,12 @@ bound_generic_type_arg_types( //dir=type int arg_type: @type_or_none ref ); +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type, + int size: @type_or_none ref, + int element_type: @type_or_none ref +); + builtin_integer_literal_types( //dir=type unique int id: @builtin_integer_literal_type ); diff --git a/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme b/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme new file mode 100644 index 000000000000..33e5e5e03bd3 --- /dev/null +++ b/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme @@ -0,0 +1,2885 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme b/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme new file mode 100644 index 000000000000..ee3053b673c9 --- /dev/null +++ b/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme @@ -0,0 +1,2889 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_generic_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +@builtin_generic_type = + @builtin_fixed_array_type +; + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties b/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties new file mode 100644 index 000000000000..dfc606c6f143 --- /dev/null +++ b/swift/ql/lib/upgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties @@ -0,0 +1,2 @@ +description: Upgrade to Swift 6.3 +compatibility: full diff --git a/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/old.dbscheme b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/old.dbscheme new file mode 100644 index 000000000000..ee3053b673c9 --- /dev/null +++ b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/old.dbscheme @@ -0,0 +1,2889 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_generic_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +@builtin_generic_type = + @builtin_fixed_array_type +; + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/swift.dbscheme b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/swift.dbscheme new file mode 100644 index 000000000000..5738be6bb047 --- /dev/null +++ b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/swift.dbscheme @@ -0,0 +1,2891 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_generic_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +@builtin_generic_type = + @builtin_fixed_array_type +; + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type, + int size: @type_or_none ref, + int element_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.properties b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.properties new file mode 100644 index 000000000000..48de15f84ae7 --- /dev/null +++ b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.properties @@ -0,0 +1,4 @@ +description: Support BuiltinFixedArrayType arguments +compatibility: backwards +builtin_fixed_array_types.rel: run upgrade.ql new_builtin_fixed_array_types +unspecified_elements.rel: run upgrade.ql new_unspecified_elements diff --git a/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.ql b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.ql new file mode 100644 index 000000000000..03a001e6000a --- /dev/null +++ b/swift/ql/lib/upgrades/ee3053b673c901a325b361b18c50b18342752bf8/upgrade.ql @@ -0,0 +1,44 @@ +class BuiltinFixedArrayType extends @builtin_fixed_array_type { + string toString() { none() } +} + +newtype TAddedElement = + TSize(BuiltinFixedArrayType a) or + TElementType(BuiltinFixedArrayType a) + +module Fresh = QlBuiltins::NewEntity; + +class TNewElement = @element or Fresh::EntityId; + +class NewElement extends TNewElement { + string toString() { none() } +} + +class TypeOrNone extends @type_or_none { + string toString() { none() } +} + +query predicate new_builtin_fixed_array_types( + BuiltinFixedArrayType builtinFixedArrayType, NewElement size, NewElement elementType +) { + builtin_fixed_array_types(builtinFixedArrayType) and + Fresh::map(TSize(builtinFixedArrayType)) = size and + Fresh::map(TElementType(builtinFixedArrayType)) = elementType +} + +query predicate new_unspecified_elements(NewElement id, string property, string error) { + unspecified_elements(id, property, error) + or + exists(BuiltinFixedArrayType builtinFixedArrayType | + builtin_fixed_array_types(builtinFixedArrayType) + | + id = Fresh::map(TSize(builtinFixedArrayType)) and + error = "BuiltinFixedArrayType size missing after upgrade. Please update your CodeQL code." and + property = "" + or + id = Fresh::map(TElementType(builtinFixedArrayType)) and + error = + "BuiltinFixedArrayType element type missing after upgrade. Please update your CodeQL code." and + property = "" + ) +} diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 40371bcbb8d4..f880dc3366f8 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,17 @@ +## 1.3.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `swift/unsafe-webview-fetch` has been increased from 6.1 (medium) to 7.8 (high). + +## 1.2.20 + +No user-facing changes. + +## 1.2.19 + +No user-facing changes. + ## 1.2.18 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.19.md b/swift/ql/src/change-notes/released/1.2.19.md new file mode 100644 index 000000000000..0f6fd929df0d --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.19.md @@ -0,0 +1,3 @@ +## 1.2.19 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.20.md b/swift/ql/src/change-notes/released/1.2.20.md new file mode 100644 index 000000000000..1e34dffd7f59 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.20.md @@ -0,0 +1,3 @@ +## 1.2.20 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.3.0.md b/swift/ql/src/change-notes/released/1.3.0.md new file mode 100644 index 000000000000..5a85d7239d7b --- /dev/null +++ b/swift/ql/src/change-notes/released/1.3.0.md @@ -0,0 +1,5 @@ +## 1.3.0 + +### Query Metadata Changes + +* The `@security-severity` metadata of `swift/unsafe-webview-fetch` has been increased from 6.1 (medium) to 7.8 (high). diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index e414238818df..ec16350ed6fd 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.18 +lastReleaseVersion: 1.3.0 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 39171058590c..5b6c7a6977a8 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.18 +version: 1.3.1-dev groups: - swift - queries diff --git a/swift/ql/src/queries/Security/CWE-079/UnsafeWebViewFetch.ql b/swift/ql/src/queries/Security/CWE-079/UnsafeWebViewFetch.ql index 7243d2216a59..3a2de3fa80ae 100644 --- a/swift/ql/src/queries/Security/CWE-079/UnsafeWebViewFetch.ql +++ b/swift/ql/src/queries/Security/CWE-079/UnsafeWebViewFetch.ql @@ -3,7 +3,7 @@ * @description Fetching data in a WebView without restricting the base URL may allow an attacker to access sensitive local data, or enable cross-site scripting attack. * @kind path-problem * @problem.severity warning - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id swift/unsafe-webview-fetch * @tags security diff --git a/swift/ql/test/extractor-tests/declarations/all.expected b/swift/ql/test/extractor-tests/declarations/all.expected index 98b948953451..109e80ee4f60 100644 --- a/swift/ql/test/extractor-tests/declarations/all.expected +++ b/swift/ql/test/extractor-tests/declarations/all.expected @@ -116,6 +116,7 @@ | declarations.swift:77:16:77:23 | var ... = ... | | | declarations.swift:77:20:77:20 | _x | | | declarations.swift:77:20:77:20 | get | | +| declarations.swift:77:20:77:20 | var ... = ... | | | declarations.swift:77:20:77:20 | x | | | declarations.swift:81:1:136:1 | HasPropertyAndObserver | | | declarations.swift:81:8:81:8 | HasPropertyAndObserver.init(normalField:hasWillSet1:hasWillSet2:hasDidSet1:hasDidSet2:hasBoth:) | | diff --git a/swift/ql/test/extractor-tests/errors/Errors.expected b/swift/ql/test/extractor-tests/errors/Errors.expected index 50ab8ec658be..51900bf11d01 100644 --- a/swift/ql/test/extractor-tests/errors/Errors.expected +++ b/swift/ql/test/extractor-tests/errors/Errors.expected @@ -1,6 +1,6 @@ -| file://:0:0:0:0 | <> | ErrorType | -| file://:0:0:0:0 | <> | ErrorType | -| file://:0:0:0:0 | <> | ErrorType | +| file://:0:0:0:0 | _ | ErrorType | +| file://:0:0:0:0 | _ | ErrorType | +| file://:0:0:0:0 | _ | ErrorType | | overloaded.swift:6:5:6:5 | OverloadedDeclRefExpr | OverloadedDeclRefExpr | | unresolved.swift:5:1:5:14 | UnresolvedSpecializeExpr | UnresolvedSpecializeExpr | | unspecified.swift:3:1:3:23 | missing extended_type_decl from ExtensionDecl | UnspecifiedElement | diff --git a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected index ac61ba1dfc60..689d93cab9b0 100644 --- a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected +++ b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected @@ -164,8 +164,8 @@ closures.swift: # 31| getArgument(0): [Argument] : ... .!=(_:_:) ... # 31| getExpr(): [BinaryExpr] ... .!=(_:_:) ... # 31| getFunction(): [MethodLookupExpr] .!=(_:_:) -# 31| getBase(): [TypeExpr] Optional.Type -# 31| getTypeRepr(): [TypeRepr] Optional +# 31| getBase(): [TypeExpr] Int?.Type +# 31| getTypeRepr(): [TypeRepr] Int? # 31| getMethodRef(): [DeclRefExpr] !=(_:_:) # 31| getArgument(0): [Argument] : x # 31| getExpr(): [DeclRefExpr] x diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected index 09751f3c41d4..03460f83620a 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected @@ -118,11 +118,11 @@ getParentInitializer | var_decls.swift:57:36:57:36 | _w4 | var_decls.swift:57:4:57:41 | call to WrapperWithProjectedAndInit.init(wrappedValue:) | | var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:4:57:41 | call to WrapperWithProjectedAndInit.init(wrappedValue:) | getPropertyWrapperBackingVarBinding -| var_decls.swift:24:15:24:15 | wrapped | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:54:10:54:10 | w1 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:55:24:55:24 | w2 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:56:29:56:29 | w3 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:57:36:57:36 | w4 | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:24:15:24:15 | wrapped | var_decls.swift:24:15:24:15 | var ... = ... | +| var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:10:54:10 | var ... = ... | +| var_decls.swift:55:24:55:24 | w2 | var_decls.swift:55:24:55:24 | var ... = ... | +| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | var ... = ... | +| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | var ... = ... | getPropertyWrapperBackingVar | var_decls.swift:24:15:24:15 | wrapped | var_decls.swift:24:15:24:15 | _wrapped | | var_decls.swift:54:10:54:10 | w1 | var_decls.swift:54:10:54:10 | _w1 | @@ -130,8 +130,8 @@ getPropertyWrapperBackingVar | var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | _w3 | | var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | _w4 | getPropertyWrapperProjectionVarBinding -| var_decls.swift:56:29:56:29 | w3 | file://:0:0:0:0 | var ... = ... | -| var_decls.swift:57:36:57:36 | w4 | file://:0:0:0:0 | var ... = ... | +| var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | var ... = ... | +| var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | var ... = ... | getPropertyWrapperProjectionVar | var_decls.swift:56:29:56:29 | w3 | var_decls.swift:56:29:56:29 | $w3 | | var_decls.swift:57:36:57:36 | w4 | var_decls.swift:57:36:57:36 | $w4 | diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected index 05232a3cd041..52e80f2a2c69 100644 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected +++ b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected @@ -11,6 +11,7 @@ instances | file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | | file://:0:0:0:0 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | | file://:0:0:0:0 | @attached(accessor) | getKind: | 4 | getMacroSyntax: | 1 | +| file://:0:0:0:0 | @attached(extension) | getKind: | 256 | getMacroSyntax: | 1 | | file://:0:0:0:0 | @attached(member) | getKind: | 16 | getMacroSyntax: | 1 | | file://:0:0:0:0 | @attached(memberAttribute) | getKind: | 8 | getMacroSyntax: | 1 | | file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | @@ -22,6 +23,7 @@ instances | test.swift:6:2:6:20 | @attached(extension) | getKind: | 256 | getMacroSyntax: | 1 | getConformance getName +| file://:0:0:0:0 | @attached(extension) | 0 | _() | | file://:0:0:0:0 | @attached(peer) | 0 | $() | | file://:0:0:0:0 | @attached(peer) | 0 | _() | | file://:0:0:0:0 | @attached(peer) | 0 | _lldb_summary() | diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected index f67d25dc31b0..65191e3d55f1 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/ParamDecl.expected @@ -66,8 +66,8 @@ getAttachedPropertyWrapperType getParentPattern getParentInitializer getPropertyWrapperBackingVarBinding -| param_decls.swift:48:18:48:22 | p1 | file://:0:0:0:0 | var ... = ... | -| param_decls.swift:49:26:49:30 | p2 | file://:0:0:0:0 | var ... = ... | +| param_decls.swift:48:18:48:22 | p1 | param_decls.swift:48:18:48:18 | var ... = ... | +| param_decls.swift:49:26:49:30 | p2 | param_decls.swift:49:26:49:26 | var ... = ... | getPropertyWrapperBackingVar | param_decls.swift:48:18:48:22 | p1 | param_decls.swift:48:18:48:18 | _p1 | | param_decls.swift:49:26:49:30 | p2 | param_decls.swift:49:26:49:26 | _p2 | diff --git a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected index abf317e5a3b9..9f454d9cd696 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/ObjectLiteralExpr/ObjectLiteralExpr.expected @@ -3,9 +3,9 @@ instances | object_literals.swift:6:5:6:61 | #colorLiteral(...) | getKind: | 2 | | object_literals.swift:7:5:7:44 | #imageLiteral(...) | getKind: | 1 | getType -| object_literals.swift:5:5:5:42 | #fileLiteral(...) | <> | -| object_literals.swift:6:5:6:61 | #colorLiteral(...) | <> | -| object_literals.swift:7:5:7:44 | #imageLiteral(...) | <> | +| object_literals.swift:5:5:5:42 | #fileLiteral(...) | _ | +| object_literals.swift:6:5:6:61 | #colorLiteral(...) | _ | +| object_literals.swift:7:5:7:44 | #imageLiteral(...) | _ | getArgument | object_literals.swift:5:5:5:42 | #fileLiteral(...) | 0 | object_literals.swift:5:18:5:32 | resourceName: file.txt | | object_literals.swift:6:5:6:61 | #colorLiteral(...) | 0 | object_literals.swift:6:19:6:24 | red: 255 | diff --git a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected index 55fc86a8fdbd..ff575435d015 100644 --- a/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected +++ b/swift/ql/test/extractor-tests/generated/stmt/ForEachStmt/ForEachStmt.expected @@ -12,8 +12,8 @@ getVariable getWhere | for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:25:4:30 | ... .!=(_:_:) ... | getIteratorVar -| for.swift:4:5:6:5 | for ... in ... where ... { ... } | file://:0:0:0:0 | var ... = ... | -| for.swift:7:5:9:5 | for ... in ... { ... } | file://:0:0:0:0 | var ... = ... | +| for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:14:4:14 | var ... = ... | +| for.swift:7:5:9:5 | for ... in ... { ... } | for.swift:7:14:7:14 | var ... = ... | getNextCall | for.swift:4:5:6:5 | for ... in ... where ... { ... } | for.swift:4:5:4:5 | call to next() | | for.swift:7:5:9:5 | for ... in ... { ... } | for.swift:7:5:7:5 | call to next() | diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.expected b/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.expected new file mode 100644 index 000000000000..5dce3facedf0 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.expected @@ -0,0 +1,3 @@ +| Builtin.FixedArray<4, Int> | getName: | FixedArray<4, Int> | getCanonicalType: | Builtin.FixedArray<4, Int> | getSize: | 4 | getElementType: | Int | +| Builtin.FixedArray | getName: | FixedArray | getCanonicalType: | Builtin.FixedArray | getSize: | N | getElementType: | T | +| Builtin.FixedArray<\u03c4_0_0, \u03c4_0_1> | getName: | FixedArray<\u03c4_0_0, \u03c4_0_1> | getCanonicalType: | Builtin.FixedArray<\u03c4_0_0, \u03c4_0_1> | getSize: | \u03c4_0_0 | getElementType: | \u03c4_0_1 | diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.ql b/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.ql new file mode 100644 index 000000000000..e8ec753f6f6e --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/BuiltinFixedArrayType.ql @@ -0,0 +1,20 @@ +// generated by codegen/codegen.py, do not edit +import codeql.swift.elements +import TestUtils + +query predicate instances( + BuiltinFixedArrayType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getSize__label, Type getSize, string getElementType__label, + Type getElementType +) { + toBeTested(x) and + not x.isUnknown() and + getName__label = "getName:" and + getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and + getCanonicalType = x.getCanonicalType() and + getSize__label = "getSize:" and + getSize = x.getSize() and + getElementType__label = "getElementType:" and + getElementType = x.getElementType() +} diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinType/fixed_array.swift b/swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/fixed_array.swift similarity index 100% rename from swift/ql/test/extractor-tests/generated/type/BuiltinType/fixed_array.swift rename to swift/ql/test/extractor-tests/generated/type/BuiltinFixedArrayType/fixed_array.swift diff --git a/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.expected b/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.expected index 1b64e9f4a224..27e4e6f08683 100644 --- a/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.expected +++ b/swift/ql/test/extractor-tests/generated/type/BuiltinType/BuiltinType.expected @@ -2,9 +2,6 @@ | Builtin.Executor | BuiltinExecutorType | getName: | Executor | getCanonicalType: | Builtin.Executor | | Builtin.FPIEEE32 | BuiltinFloatType | getName: | FPIEEE32 | getCanonicalType: | Builtin.FPIEEE32 | | Builtin.FPIEEE64 | BuiltinFloatType | getName: | FPIEEE64 | getCanonicalType: | Builtin.FPIEEE64 | -| Builtin.FixedArray<4, Int> | BuiltinFixedArrayType | getName: | FixedArray<4, Int> | getCanonicalType: | Builtin.FixedArray<4, Int> | -| Builtin.FixedArray | BuiltinFixedArrayType | getName: | FixedArray | getCanonicalType: | Builtin.FixedArray | -| Builtin.FixedArray<\u03c4_0_0, \u03c4_0_1> | BuiltinFixedArrayType | getName: | FixedArray<\u03c4_0_0, \u03c4_0_1> | getCanonicalType: | Builtin.FixedArray<\u03c4_0_0, \u03c4_0_1> | | Builtin.IntLiteral | BuiltinIntegerLiteralType | getName: | IntLiteral | getCanonicalType: | Builtin.IntLiteral | | Builtin.Job | BuiltinJobType | getName: | Job | getCanonicalType: | Builtin.Job | | Builtin.NativeObject | BuiltinNativeObjectType | getName: | NativeObject | getCanonicalType: | Builtin.NativeObject | diff --git a/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.expected b/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.expected index 7fba23db8bdc..7b2c1bada262 100644 --- a/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.expected +++ b/swift/ql/test/extractor-tests/generated/type/IntegerType/IntegerType.expected @@ -1,2 +1,8 @@ +| 16 | getName: | 16 | getCanonicalType: | 16 | getValue: | 16 | +| 40 | getName: | 40 | getCanonicalType: | 40 | getValue: | 40 | +| 58 | getName: | 58 | getCanonicalType: | 58 | getValue: | 58 | +| 100 | getName: | 100 | getCanonicalType: | 100 | getValue: | 100 | +| 112 | getName: | 112 | getCanonicalType: | 112 | getValue: | 112 | | 128 | getName: | 128 | getCanonicalType: | 128 | getValue: | 128 | | 256 | getName: | 256 | getCanonicalType: | 256 | getValue: | 256 | +| 716 | getName: | 716 | getCanonicalType: | 716 | getValue: | 716 | diff --git a/swift/ql/test/library-tests/ast/PrintAst.expected b/swift/ql/test/library-tests/ast/PrintAst.expected index 8cd6a4a5aff7..9e47767c2376 100644 --- a/swift/ql/test/library-tests/ast/PrintAst.expected +++ b/swift/ql/test/library-tests/ast/PrintAst.expected @@ -705,7 +705,7 @@ cfg.swift: # 138| getVariable(0): [ConcreteVarDecl] $generator # 138| Type = IndexingIterator> # 138| getPattern(): [AnyPattern] _ -#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... +# 138| getIteratorVar(): [PatternBindingDecl] var ... = ... # 138| getInit(0): [CallExpr] call to makeIterator() # 138| getFunction(): [MethodLookupExpr] .makeIterator() # 138| getBase(): [BinaryExpr] ... ....(_:_:) ... @@ -3263,7 +3263,7 @@ cfg.swift: # 526| getVariable(1): [ConcreteVarDecl] $i$generator # 526| Type = IndexingIterator> # 526| getPattern(): [NamedPattern] i -#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... +# 526| getIteratorVar(): [PatternBindingDecl] var ... = ... # 526| getInit(0): [CallExpr] call to makeIterator() # 526| getFunction(): [MethodLookupExpr] .makeIterator() # 526| getBase(): [BinaryExpr] ... ....(_:_:) ... @@ -3302,7 +3302,7 @@ cfg.swift: # 533| getVariable(1): [ConcreteVarDecl] $i$generator # 533| Type = AsyncStream.Iterator # 533| getPattern(): [NamedPattern] i -#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... +# 533| getIteratorVar(): [PatternBindingDecl] var ... = ... # 533| getInit(0): [CallExpr] call to makeAsyncIterator() # 533| getFunction(): [MethodLookupExpr] .makeAsyncIterator() # 533| getBase(): [DeclRefExpr] stream @@ -4141,7 +4141,7 @@ declarations.swift: #-----| getResult(): [MemberRefExpr] .wrappedValue #-----| getBase(): [DeclRefExpr] _x #-----| getCapture(0): [CapturedDecl] _x -#-----| getPropertyWrapperBackingVarBinding(): [PatternBindingDecl] var ... = ... +# 77| getPropertyWrapperBackingVarBinding(): [PatternBindingDecl] var ... = ... # 77| getInit(0): [CallExpr] call to ZeroWrapper.init() # 77| getFunction(): [MethodLookupExpr] ZeroWrapper.init() # 77| getBase(): [TypeExpr] ZeroWrapper.Type @@ -7018,7 +7018,7 @@ statements.swift: # 2| getVariable(1): [ConcreteVarDecl] $i$generator # 2| Type = IndexingIterator> # 2| getPattern(): [NamedPattern] i -#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... +# 2| getIteratorVar(): [PatternBindingDecl] var ... = ... # 2| getInit(0): [CallExpr] call to makeIterator() # 2| getFunction(): [MethodLookupExpr] .makeIterator() # 2| getBase(): [BinaryExpr] ... ....(_:_:) ... @@ -7470,7 +7470,7 @@ statements.swift: # 71| getExpr(): [IntegerLiteralExpr] 2 # 71| getArgument(1): [Argument] : 0 # 71| getExpr(): [IntegerLiteralExpr] 0 -#-----| getIteratorVar(): [PatternBindingDecl] var ... = ... +# 71| getIteratorVar(): [PatternBindingDecl] var ... = ... # 71| getInit(0): [CallExpr] call to makeIterator() # 71| getFunction(): [MethodLookupExpr] .makeIterator() # 71| getBase(): [DeclRefExpr] numbers diff --git a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected index 8fc8c7808b1b..f128a0994b53 100644 --- a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -474,7 +474,8 @@ | cfg.swift:138:12:138:12 | 0 | cfg.swift:138:16:138:16 | 10 | | | cfg.swift:138:12:138:12 | $generator | cfg.swift:138:12:138:12 | .makeIterator() | match | | cfg.swift:138:12:138:12 | .makeIterator() | cfg.swift:138:13:138:13 | ....(_:_:) | | -| cfg.swift:138:12:138:12 | call to makeIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:138:12:138:12 | call to makeIterator() | cfg.swift:138:12:138:12 | var ... = ... | | +| cfg.swift:138:12:138:12 | var ... = ... | cfg.swift:138:3:138:3 | .next() | | | cfg.swift:138:12:138:16 | ... ....(_:_:) ... | cfg.swift:138:12:138:12 | call to makeIterator() | | | cfg.swift:138:13:138:13 | ....(_:_:) | cfg.swift:138:13:138:13 | Int.Type | | | cfg.swift:138:13:138:13 | Int.Type | cfg.swift:138:12:138:12 | 0 | | @@ -2023,7 +2024,8 @@ | cfg.swift:526:26:526:26 | 1 | cfg.swift:526:30:526:30 | 100 | | | cfg.swift:526:26:526:26 | $i$generator | cfg.swift:526:26:526:26 | .makeIterator() | match | | cfg.swift:526:26:526:26 | .makeIterator() | cfg.swift:526:27:526:27 | ....(_:_:) | | -| cfg.swift:526:26:526:26 | call to makeIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:526:26:526:26 | call to makeIterator() | cfg.swift:526:26:526:26 | var ... = ... | | +| cfg.swift:526:26:526:26 | var ... = ... | cfg.swift:526:17:526:17 | .next() | | | cfg.swift:526:26:526:30 | ... ....(_:_:) ... | cfg.swift:526:26:526:26 | call to makeIterator() | | | cfg.swift:526:27:526:27 | ....(_:_:) | cfg.swift:526:27:526:27 | Int.Type | | | cfg.swift:526:27:526:27 | Int.Type | cfg.swift:526:26:526:26 | 1 | | @@ -2048,8 +2050,9 @@ | cfg.swift:533:24:533:24 | $i$generator | cfg.swift:533:24:533:24 | .makeAsyncIterator() | match | | cfg.swift:533:24:533:24 | (AsyncStream) ... | cfg.swift:533:24:533:24 | call to makeAsyncIterator() | | | cfg.swift:533:24:533:24 | .makeAsyncIterator() | cfg.swift:533:24:533:24 | stream | | -| cfg.swift:533:24:533:24 | call to makeAsyncIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:533:24:533:24 | call to makeAsyncIterator() | cfg.swift:533:24:533:24 | var ... = ... | | | cfg.swift:533:24:533:24 | stream | cfg.swift:533:24:533:24 | (AsyncStream) ... | | +| cfg.swift:533:24:533:24 | var ... = ... | cfg.swift:533:5:533:5 | .next(isolation:) | | | cfg.swift:534:9:534:9 | print(_:separator:terminator:) | cfg.swift:534:15:534:15 | i | | | cfg.swift:534:9:534:16 | call to print(_:separator:terminator:) | cfg.swift:533:5:533:5 | .next(isolation:) | | | cfg.swift:534:14:534:14 | default separator | cfg.swift:534:14:534:14 | default terminator | | @@ -2350,6 +2353,3 @@ | file://:0:0:0:0 | value | file://:0:0:0:0 | ... = ... | | | file://:0:0:0:0 | value | file://:0:0:0:0 | ... = ... | | | file://:0:0:0:0 | value | file://:0:0:0:0 | ... = ... | | -| file://:0:0:0:0 | var ... = ... | cfg.swift:138:3:138:3 | .next() | | -| file://:0:0:0:0 | var ... = ... | cfg.swift:526:17:526:17 | .next() | | -| file://:0:0:0:0 | var ... = ... | cfg.swift:533:5:533:5 | .next(isolation:) | | diff --git a/swift/schema.py b/swift/schema.py index e7b45fb81a57..febbf1ae2f47 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -307,7 +307,6 @@ class ModuleDecl(TypeDecl): class SubscriptDecl(AbstractStorageDecl, GenericContext): params: list[ParamDecl] | child element_type: Type - element_type: Type @group("decl") class Accessor(AccessorOrNamedFunction): @@ -1480,8 +1479,16 @@ class TypeValueExpr(Expr): class IntegerType(Type): value: string -class BuiltinFixedArrayType(BuiltinType): +class BuiltinGenericType(BuiltinType): """ - A builtin type representing N values stored contiguously. + A builtin generic type. """ pass + +@qltest.uncollapse_hierarchy +class BuiltinFixedArrayType(BuiltinGenericType): + """ + A builtin type representing N values stored contiguously. + """ + size: Type + element_type: Type diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index f2ebfa748776..676c5f0ce847 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -81,12 +81,13 @@ def load_dependencies(module_ctx): _load_prebuilt(plat) _load_resource_dir(plat) - _github_archive( + # Vendored from okdshin/PicoSHA2 (personal account). + # To update (from the internal repo): resources/third_party/vendor.sh -o ql/swift/third_party/resources okdshin/PicoSHA2 + lfs_archive( name = "picosha2", + src = "//swift/third_party/resources:PicoSHA2-27fcf6979298949e8a462e16d09a0351c18fcaf2.tar.zst", + strip_prefix = "PicoSHA2-27fcf6979298949e8a462e16d09a0351c18fcaf2", build_file = _build % "picosha2", - repository = "okdshin/PicoSHA2", - commit = "27fcf6979298949e8a462e16d09a0351c18fcaf2", - sha256 = "d6647ca45a8b7bdaf027ecb68d041b22a899a0218b7206dee755c558a2725abb", ) _github_archive( diff --git a/swift/third_party/resources/PicoSHA2-27fcf6979298949e8a462e16d09a0351c18fcaf2.tar.zst b/swift/third_party/resources/PicoSHA2-27fcf6979298949e8a462e16d09a0351c18fcaf2.tar.zst new file mode 100644 index 000000000000..d8d7e0732cb0 --- /dev/null +++ b/swift/third_party/resources/PicoSHA2-27fcf6979298949e8a462e16d09a0351c18fcaf2.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3082b319e6281be54b77b7619a38e5718266fca5e693bc4e23dd76bb17bc6420 +size 8159 diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index a6e0fe2fa125..8692eb89fd4c 100644 --- a/swift/third_party/resources/resource-dir-linux.zip +++ b/swift/third_party/resources/resource-dir-linux.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34e30361f98e5c3abec7be1d7136252cad97eba4916a87e3c08992e0289eb00f -size 385238500 +oid sha256:25718237e4b0d725f62baceb8e9eb6b1090433c3a64c15b54205bbd3b1241a78 +size 408416862 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index 80411222aaba..51c367e2b136 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:e3966e6e8039fba5730dc49bf0a51986c6da28a94aa86552c187b66dc3716a9b -size 613938283 +oid sha256:97c427650a83bd1d70846ef24965cbe2451c3e9b3bb86530f0cb704936ffa07a +size 548168307 diff --git a/swift/third_party/resources/swift-prebuilt-linux.tar.zst b/swift/third_party/resources/swift-prebuilt-linux.tar.zst index 2aedff45fc86..769117fefeaf 100644 --- a/swift/third_party/resources/swift-prebuilt-linux.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-linux.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1960a80b5cbc7e1ec0ef4b221254efdd6d266eaed11c7fa6fff5388648d1881b -size 132800316 +oid sha256:b313be2bee2c0afbedbe710435b7e0836e1a06f6a8b57d300c9843ebd1f469e3 +size 143494508 diff --git a/swift/third_party/resources/swift-prebuilt-macos.tar.zst b/swift/third_party/resources/swift-prebuilt-macos.tar.zst index aaf3d1c42af8..a48c2ce04661 100644 --- a/swift/third_party/resources/swift-prebuilt-macos.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-macos.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b7ec0e2bd28b16ca9a16cb3d1ad8c917ad4641cf1d0fe574e75381871beeda4 -size 115351244 +oid sha256:4aea62dad0e67b8bb6ac5536a3fff1730f48a15f516b5b6d48b6c42f16508687 +size 125103802